cgoでコンパイルできない

WBOY
リリース: 2024-02-09 16:21:09
転載
1220 人が閲覧しました

cgoでコンパイルできない

php エディター Baicao は、コードを作成するときにいくつかの問題や課題に遭遇することがよくあります。よくある問題の 1 つは、cgo でコンパイルするときに、「cgo ではコンパイルできません」というエラー メッセージが表示されることです。この問題は、依存ライブラリの欠落、環境構成の誤りなど、さまざまな理由によって発生する可能性があります。この問題を解決するには、コードと環境を注意深く検査し、特定の状況に基づいて適切な調整と修正を行う必要があります。この記事では、誰もがこの問題を克服できるように、この問題を解決するためのいくつかの方法とテクニックを紹介します。

質問内容

goのバージョン(goバージョン)は何をお使いですか?

リーリー

プロジェクト構造:

リーリー

main.go

リーリー

lib/lib.c

リーリー

lib/lib.h

リーリー

コンパイル中のエラー

リーリー

コードが正常にコンパイルされると期待していましたが、どういうわけか正常にコンパイルされませんでした。ドキュメントを正しく読めば、lib.clib.hmain.go ファイルと同じディレクトリに保存する必要があります。しかし、これが可能かどうか、それとも私が何か間違っているのかどうかはわかりません。

  • すべてのファイルを同じディレクトリに保存すると、コンパイルは成功します。

  • lib.clib.h をサブディレクトリに保存するとコンパイルが失敗します

  • main.go から関数 f32_123 を削除すると、コンパイルも成功しますが、これは奇妙なことです。そのため、なぜこのエラーが発生するのかをよりよく理解するために、このエラーを開いたのです。 ##lib.h および lib.c がサブディレクトリにある場合、コンパイル時の printc 関数に問題があります。

解決策

まず第一に、@jimbは少し前にこの承認された回答を提供しました:

https://www.php.cn/link/50c57f7019bb52cfbebdfe5bdc42b422 を示しますサブディレクトリにオブジェクトやライブラリを構築することは、 a>go build では実行できないことです。

これを踏まえて、次の構造があると仮定します:

リーリー

わかりやすくするために、より単純なファイルをいくつか示します:

リーリー リーリー

つまり、次のような

main.go がある場合は、go build main.go: からすべてをビルドできます。 リーリー

これが機能するのは、実際に

#ライブラリの「c」ソース コードを #インクルードしているためです (lib/lib.h ファイルを暗黙的にインポートしています)。

ただし、より複雑なライブラリの場合は、別個のより通常の C ツールチェーンとしてビルドする必要がある場合があります。ビルド前の手順は次のとおりです。

リーリー

次に、別の go ファイルを使用します:

main2.go: リーリー

以上がcgoでコンパイルできないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート