php エディター Baicao は、コードを作成するときにいくつかの問題や課題に遭遇することがよくあります。よくある問題の 1 つは、cgo でコンパイルするときに、「cgo ではコンパイルできません」というエラー メッセージが表示されることです。この問題は、依存ライブラリの欠落、環境構成の誤りなど、さまざまな理由によって発生する可能性があります。この問題を解決するには、コードと環境を注意深く検査し、特定の状況に基づいて適切な調整と修正を行う必要があります。この記事では、誰もがこの問題を克服できるように、この問題を解決するためのいくつかの方法とテクニックを紹介します。
goのバージョン(goバージョン)は何をお使いですか?
リーリープロジェクト構造:
リーリーmain.go
lib/lib.c
lib/lib.h
コンパイル中のエラー
リーリー コードが正常にコンパイルされると期待していましたが、どういうわけか正常にコンパイルされませんでした。ドキュメントを正しく読めば、lib.c
と lib.h
を main.go
ファイルと同じディレクトリに保存する必要があります。しかし、これが可能かどうか、それとも私が何か間違っているのかどうかはわかりません。
すべてのファイルを同じディレクトリに保存すると、コンパイルは成功します。
lib.c
と lib.h
をサブディレクトリに保存するとコンパイルが失敗します
main.go から関数 f32_123
を削除すると、コンパイルも成功しますが、これは奇妙なことです。そのため、なぜこのエラーが発生するのかをよりよく理解するために、このエラーを開いたのです。 ##lib.h および
lib.c がサブディレクトリにある場合、コンパイル時の printc 関数に問題があります。
https://www.php.cn/link/50c57f7019bb52cfbebdfe5bdc42b422 を示しますサブディレクトリにオブジェクトやライブラリを構築することは、 a>go build では実行できないことです。
リーリー
わかりやすくするために、より単純なファイルをいくつか示します:リーリー リーリー
つまり、次のようなmain.go がある場合は、
go build main.go:
からすべてをビルドできます。
リーリー
#ライブラリの「c」ソース コードを #インクルードしているためです (
lib/lib.h ファイルを暗黙的にインポートしています)。
リーリー
次に、別の go ファイルを使用します:main2.go:
リーリー
以上がcgoでコンパイルできないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。