首頁 >後端開發 >Golang >如何將Go程式碼整合到現有的C專案中?

如何將Go程式碼整合到現有的C專案中?

Barbara Streisand
Barbara Streisand原創
2024-12-20 17:23:14387瀏覽

How Can I Integrate Go Code into Existing C Projects?

將Go 程式碼整合到現有的C 專案中

在Go 1.5 之前,將Go 程式碼整合到C 專案中是一項挑戰。但是,隨著 -buildmode=c-archive 標誌的引入,可以從 C 程式中呼叫 Go 程式碼。

要產生與 C 程式碼連結所需的頭檔和存檔,請依照下列步驟操作步驟:

  1. 使用要公開給 C 的函數建立一個 Go 原始檔。
  2. 使用//export 標記導出的函數
  3. 使用以下命令建立C 可呼叫靜態庫:
go build -buildmode=c-archive <Go_source_file>.go

這將產生一個存檔(例如foo .a)和一個頭檔(例如,foo.h)。

在您的 C 程式碼中,包含產生的頭檔並使用 CGo 命名後的匯出函數慣例。例如:

#include "foo.h"

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

要編譯C 程序,請使用以下指令:

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

附加說明:

  • Go 來源文件中的main 函數是必需的,即使是空的。
  • 使用 -pthread當 Go 執行緒時編譯 C 程式時的選項。
  • 在建置程式庫時,您可以分別使用 -o 和 -I 標誌指定輸出檔案和頭檔名稱。

以上是如何將Go程式碼整合到現有的C專案中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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