ホームページ  >  記事  >  バックエンド開発  >  GCCGO を使用して Go 関数を既存の C プロジェクトに統合するにはどうすればよいですか?

GCCGO を使用して Go 関数を既存の C プロジェクトに統合するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 20:36:03469ブラウズ

How to Integrate Go Functions into an Existing C Project using GCCGO?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。