9

外部の C ライブラリ (dll) を動的にロードし、Go でその関数を呼び出すことは可能ですか?

cgoC関数に静的にバインドするために使用されるものがあることは知っていますが、動的な方法に興味があります。

4

1 に答える 1

7

簡単な答え:いいえ。(少なくともgcでは、gccgoはgccリンク可能であるため、可能かもしれません)

中程度の回答:ただし、たとえばlibffiやlibdlを静的にバインドし、それを使用して他のライブラリを動的にロードすることができます。

長い答え:goツールチェーンのCコンパイラとアセンブラを使用してCとASMでgoパッケージを作成できます(たとえば、src / pkg / runtimeを参照)。したがって、FFIをCまたはASMのいずれかでgoパッケージとして作成できます。

編集:以下のコメントから(今はCWも)

syscallまたは、 andパッケージを使用して実行することもできunsafeます(Windowsでは簡単ですが、Linuxでは難しく、上記の3番目のソリューションからそれほど遠くないでしょう)。

http://code.google.com/p/go/wiki/CallingWindowsDLLs

于 2010-11-09T13:02:23.263 に答える