C コードを含むパッケージを使用して Golang プロジェクトを正しくコンパイルする方法

WBOY
リリース: 2024-02-06 10:24:03
転載
958 人が閲覧しました

如何使用包含 C 代码的包正确编译 Golang 项目

質問内容

Golang でプロジェクトを書き始めたのですが、すぐに問題に遭遇しました。コードからハードウェアに接続する必要があり、ドライバーとベンダーが提供する Golang ラッパーが必要です。ラッパー接続の説明には、コードをプロジェクトの src ディレクトリに配置する必要があると記載されています (私はそのようなディレクトリは使用しませんが、ファイルをパッケージ名でディレクトリ ./internal/fptr10 と main に配置します)。正常にインポートされました)。 IDE GoLand でこのパッケージのメソッドを確認しましたが、プロジェクトをコンパイルしようとすると (ドライバー インスタンスを作成する最初の関数 New() を呼び出します)、エラー fptr10 が発生します。 New() が定義されていません。ラッパー ディレクトリに C で書かれた 2 つのヘッダー ファイルがあり、それらに何か問題があることはわかっていますが、正しくコンパイルする方法がわかりません。

プロジェクト全体とライブラリ自体は、https://github.com/Natrix31/KKTWatcher で見つけることができます。 追伸: 私は Windows

で作業しています。

go build と go install を使用して、IDE とコマンドラインからプロジェクトをコンパイルしてみました しかし、結果は同じです。プログラムはコンパイルに失敗し、次のエラーが表示されます: New() unknown


正解


この場合、C コードを go モジュールに入れて、単に Make することができます。プラットフォームに C コンパイラがインストールされていることを確認し、プリアンブルのコメントを使用してそれを参照してください。

main.go

リーリー

calc.c

リーリー

calc.h

リーリー

go はデフォルトで cgo を有効にするので、それをビルドするだけです:

リーリー

以上がC コードを含むパッケージを使用して Golang プロジェクトを正しくコンパイルする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!