Go コードを既存の C プロジェクトに統合する
質問:
Go コードを呼び出すことは可能ですか? C プログラムからのものです。そうであれば、どのようにしてこれを行うことができますか?達成されましたか?
答え:
はい、Go 1.5 では -buildmode=c-archive モードが導入されました。これにより、Go コードを C プログラムへのリンクに適したアーカイブにコンパイルできるようになります。 Go コードを既存の C プロジェクトに統合するには:
関数をエクスポート用にマーク:
コンパイル行くアーカイブ:
次のコマンドを使用して Go コードを C 呼び出し可能な静的ライブラリにコンパイルします:
go build -buildmode=c-archive foo.go
リンク C プログラム:
C プログラムに、生成されたヘッダファイル:
#include "foo.h"
リンク-pthread オプションを使用して Go アーカイブに対して:
gcc -pthread foo.c foo.a -o foo
例:
次の Go コードを考えてみましょう。 (foo.go):
package main import "C" import "fmt" //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
アーカイブにコンパイルします:
go build -buildmode=c-archive foo.go
次に、C プログラム (foo.c):
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
コンパイルします:
gcc -pthread foo.c foo.a -o foo
foo を実行すると出力されます「42」。
以上がGo コードを既存の C プロジェクトに統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。