ギャップを埋める: C プロジェクトから Go コードを呼び出す
ソフトウェア エンジニアリングの領域では、言語間の統合が重要な役割を果たします。既存のプロジェクトの機能を拡張します。 Go 1.5 の登場により、C プログラムから Go コードをシームレスに呼び出すことが現実になりました。この記事では、この統合を実現するための実践的な側面を掘り下げ、関連するニュアンスとベスト プラクティスに光を当てます。
C 呼び出し可能な Go アーカイブの構築
Go コードをレンダリングするにはC プログラムにアクセスできるようにするには、コンパイル中に -buildmode=c-archive フラグを呼び出す必要があります。このフラグは、C 呼び出し可能な静的ライブラリ (.a) と関連するヘッダー ファイル (.h) を生成します。 Go コード内では、//export コメントを使用して、特定の関数をエクスポート用にマークする必要があります。さらに、これらの関数を含むパッケージには main という名前を付け、空の main 関数を定義する必要があります。
たとえば、次の foo.go ファイルについて考えてみましょう。
package main import ( "C" "fmt" ) //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
C 用コンパイル互換性
C 呼び出し可能なアーカイブとヘッダーを構築するには、次のコマンドを実行します。 command:
go build -buildmode=c-archive foo.go
C での Go 関数の使用
生成されたヘッダー ファイルには、C でエクスポートされた Go 関数にアクセスするために必要な宣言が含まれています。付属の C プログラムでは foo .c の場合、PrintInt 関数は次のように呼び出すことができます。
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
リンクと実行
Go と C コードをリンクする最終的な実行可能ファイルを作成するには、次のコマンドを使用して C プログラムをコンパイルします。
gcc -pthread foo.c foo.a -o foo
結論
Go 1.5 で導入された機能を活用することで、開発者は Go のパワーと利便性を既存の C プロジェクトにシームレスに統合できます。このプロセスには、Go 関数をエクスポート用にマークし、それらを C 互換アーカイブにコンパイルし、生成されたヘッダー ファイルを使用して C コード内でこれらの関数を使用することが含まれます。この知識があれば、プログラマーは両方の言語の強みを組み合わせて活用し、新たな可能性を解き放ち、ソフトウェア システムの機能を強化できます。
以上がC プロジェクトから Go コードを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。