ホームページ  >  記事  >  バックエンド開発  >  C コードを含むパッケージを使用して Golang プロジェクトを正しくコンパイルする方法

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

WBOY
WBOY転載
2024-02-06 10:24:03931ブラウズ

如何使用包含 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 までご連絡ください。