首頁 >後端開發 >Golang >如何從我的 C 專案中呼叫 Go 程式碼?

如何從我的 C 專案中呼叫 Go 程式碼?

Susan Sarandon
Susan Sarandon原創
2024-12-15 22:03:13916瀏覽

How Can I Call Go Code from My C Projects?

彌合差距:從C 專案中呼叫Go 程式碼

在軟體工程領域,跨語言整合起著至關重要的作用擴展現有項目的能力。隨著Go 1.5的出現,從C程式無縫調用Go程式碼的前景已經成為現實。本文深入探討了實現此整合的實際方面,闡明了其中的細微差別和最佳實踐。

建立 C-Callable Go 檔案

渲染 Go 程式碼對於 C 程式來說,必須在編譯期間呼叫 -buildmode=c-archive 標誌。此標誌產生一個 C 可呼叫靜態函式庫 (.a) 和一個關聯的頭檔 (.h)。在 Go 程式碼中,必須使用 //export 註解將特定函數標記為匯出。此外,包含這些函數的套件應命名為 main 並定義一個空的 main 函數。

例如,考慮以下foo.go 檔案:

package main

import (
    "C"
    "fmt"
)

//export PrintInt
func PrintInt(x int) {
    fmt.Println(x)
}

func main() {}

編譯為C相容性

要建置C 可呼叫的檔案和標頭,請執行以下指令指令:

go build -buildmode=c-archive foo.go

在C 中使用Go函數

產生的頭檔提供了存取 C 中導出的 Go 函數所需的宣告。在附帶的C 程式foo 中.c 中,PrintInt 函數可以如下呼叫:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}

連結和執行

要建立連結Go 和C 程式碼的最終可執行文件,請使用以下命令編譯 C程序:

gcc -pthread foo.c foo.a -o foo

結論

利用Go 1.5 中引入的功能,開發人員可以將Go 的強大功能和便利性無縫整合到現有的C 項目中。這個過程包括標記要匯出的 Go 函數、將它們編譯成 C 相容的存檔,以及使用產生的頭檔在 C 程式碼中使用這些函數。有了這些知識,程式設計師可以利用兩種語言的綜合優勢,釋放新的可能性並增強其軟體系統的功能。

以上是如何從我的 C 專案中呼叫 Go 程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn