Go を使用して共有オブジェクト (.so) ファイル内の関数にアクセスするには、次の手法を利用できます。
コンパイル時に共有ライブラリがわかっている場合は、cgo を使用できます。適切なリンカー フラグを指定し、特定の行をコメント アウトすることで、共有ライブラリから関数を直接呼び出すことができます。たとえば、libfoo.so から bar() を呼び出すには:
<code class="go">package example // #cgo LDFLAGS: -lfoo // // #include <foo.h> import "C" func main() { C.bar() }</code>
または、cgo を使用して、実行時に共有オブジェクトを動的にロードすることもできます。これには、C ラッパー関数を使用して、ライブラリを開く (dlopen())、関数アドレスを取得する (dlsym())、ライブラリを閉じる (dlclose()) ためのロジックを実装することが含まれます。
cgo の代わりに、共有ライブラリ関数に Go 互換のインターフェイスを提供するカスタム C ラッパーを作成できます。 Go の CGO API を介して関数をエクスポートする独自の C ライブラリを構築することで、共有ライブラリとの対話をより詳細に制御できるようになります。
Python の ctypes パッケージの機能を複製するには、 Go から C ライブラリにアクセスするための ctypes のようなインターフェイスを提供する mach-go ライブラリの使用を検討してください。このライブラリは、Linux を含むさまざまなプラットフォームをサポートし、共有オブジェクトをロードして使用する簡単な方法を提供します。
以上がGo で Linux 共有ライブラリとインターフェースするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。