質問: Go アプリケーションは静的オブジェクト (.so) ファイル内の関数と対話できますか?
答え: はい、Go を使用してライブラリから関数をロードして呼び出すことは可能です。ただし、オンラインでは反対の主張があるにもかかわらず、組み込みの syscall パッケージは LoadLibrary 関数を提供しません。
これを実現するには、C と Go コードの橋渡しツールである cgo を活用できます。 POSIX C ライブラリの dlopen および関連関数を使用する例を次に示します。
<code class="go">// #cgo LDFLAGS: -ldl // #include <dlfcn.h> import "C" import fmt func foo() { handle := C.dlopen(C.CString("libfoo.so"), C.RTLD_LAZY) bar := C.dlsym(handle, C.CString("bar")) fmt.Printf("bar is at %p\n", bar) }</code>
この例では:
このアプローチに従うことで、Go コードから外部ライブラリの関数をシームレスに呼び出すことができます。
以上がGo アプリケーションは .so ファイル内の関数とどのようにやり取りできるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。