2009-11-19 55 views
22

如何將一個Go程序與一個C庫接口?接口與C庫一起使用

我一直在瀏覽Go的源代碼,但我仍然沒有弄明白。如果有人已經這樣做了,請分享一下嗎?

更新:感謝@fserb,我從圍棋源發佈一些文檔:

CGO能夠調用C代碼轉到 包的創建過程。

用法:CGO [編譯選項] file.go

編譯器調用 GCC編譯 包的C-部件時選項傳遞 通過未解釋。

輸入file.go是語法上 有效轉到源,其導入 僞包「C」,然後文件指的是 類型,如C.size_t,變量,如 C.stdout,或功能,例如作爲 C.putchar。

如果「C」的進口立即是 有註釋之前,該評論是編譯包的C- 部件時用作首標 。例如:

// #include <stdio.h> 
// #include <errno.h> 
import "C" 

CGO將輸入文件轉換成 四個輸出文件:二轉到源 文件,6C(或8C或圖5c), 和C文件GCC C文件。

Make.pkg中的標準軟件包生成文件規則自動執行使用 cgo的過程。例子參見$ GOROOT/misc/cgo/stdio和 $ GOROOT/misc/cgo/gmp。

Cgo尚未使用gccgo。

回答

19

檢查cgo。另外,請查看Go源代碼中的misc/cgo/gmp以獲取有關如何在Go中打包C庫的示例代碼。

+0

有趣...我會馬上學習。謝謝! – jldupont 2009-11-19 02:20:07