Go 1.5 では、Go コードを非 Go にブリッジするために -buildmode=c-archive 機能が導入されました。環境。この機能を使用すると、Go コードを既存の C プロジェクトに統合し、より冗長な Go に高レベルのタスクを委任できるようになります。
Go を作成するにはC コードで使用できる関数を使用するには、特別な //export コメントを使用して関数を明示的にエクスポートする必要があります。
package main import ( "C" "fmt" ) //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Go コードを C 呼び出し可能なライブラリとしてコンパイルするには、-buildmode=c-archive フラグを使用する必要があります。
go build -buildmode=c-archive foo.go
このコマンドは、静的ライブラリ (foo.a) とエクスポートされた関数宣言を含むヘッダー ファイル (foo.h)。
C プロジェクト内に、生成されたヘッダー ファイルをインクルードし、次のように提供された関数を使用します。
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
C プログラムをコンパイルするには、次を使用します。適切なスレッドをサポートするための -pthread フラグ。
gcc -pthread foo.c foo.a -o foo
実行可能ファイルを実行すると、意図した内容が出力されます。整数 (42) をコンソールに送信します。
以上がGo 1.5 の `-buildmode=c-archive` を使用して C プログラムから Go 関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。