在現有C 專案中使用Go
您的目標是透過從Go 來源建立物件檔案來將Go 函數整合到C程式中文件並將其包含在現有的C 專案中。但是,儘管使用 GCCGO,您還是會遇到連結錯誤。
要按照解決方案的建議解決此問題,請考慮以下方法:
對於Go 1.5 及更高版本,請使用-buildmode 標誌建立C 相容庫:
靜態庫:
go build -buildmode c-archive -o mygopkg.a
共享庫:
go build -buildmode c-shared -o mygopkg.so
一旦您擁有了C 相容庫,您就可以將其整合到您的C 專案中:
靜態庫:
gcc -o main _main.c mygopkg.a -lpthread
共享庫:
export LD_RUN_PATH=$(pwd) gcc -o main _main.c mygopkg.so -lpthread
請注意,LD_RUN_PATH 確保連結器在目前目錄中尋找庫。
使用此方法,您可以在 Go 中建立 C 相容程式庫並將它們無縫整合到現有 C 專案中,從而允許您從 C 程式中呼叫 Go 函數。
以上是如何使用 GCCGO 將 Go 函數整合到現有的 C 專案中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!