23

Go プログラムと C ライブラリをどのように接続しますか?

Go のソース コードを参照してきましたが、まだわかりませんでした。誰かがすでにそうしている場合は、共有していただけますか?

更新: @fserb のおかげで、Go ソースからいくつかのドキュメントを投稿しています。

Cgo を使用すると、C コードを呼び出す Go パッケージを作成できます。

使用法: cgo [コンパイラ オプション] file.go

gcc を呼び出してパッケージの C 部分をコンパイルする場合、コンパイラ オプションは解釈されずに渡されます。

入力 file.go は、疑似パッケージ「C」をインポートし、C.size_t などの型、C.stdout などの変数、または C.putchar などの関数を参照する、構文的に有効な Go ソース ファイルです。

「C」のインポートの直前にコメントがある場合、そのコメントは、パッケージの C 部分をコンパイルするときにヘッダーとして使用されます。例えば:

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

Cgo は、入力ファイルを 4 つの出力ファイルに変換します。2 つの Go ソース ファイル、6c (または 8c または 5c) 用の C ファイル、および gcc 用の C ファイルです。

Make.pkg の標準パッケージ makefile ルールは、cgo を使用するプロセスを自動化します。例については、$GOROOT/misc/cgo/stdio および $GOROOT/misc/cgo/gmp を参照してください。

Cgo はまだ gccgo では動作しません。

4

1 に答える 1

20

cgoを確認してください。また、Go で C ライブラリをラップする方法のサンプル コードについては、Go ソース コードの misc/cgo/gmp を参照してください。

于 2009-11-19T02:16:57.133 に答える