既存の 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 中国語 Web サイトの他の関連記事を参照してください。