Go中的动态FFI

Mar*_*rko 9 c dynamic ffi go

是否可以动态加载外部C库(dll)并在Go中调用其函数?

我知道有cgo哪些用于静态绑定到C函数,但我对动态方式感兴趣.

cth*_*m06 6

简答:不.(至少不是用gc,gccgo是gcc可链接的,所以它可能是可能的)

中等答案:但是,您可以静态绑定,例如,libffi或libdl,然后使用来动态加载其他库.

简单回答:您可以使用go工具链C编译器和汇编器在C和ASM中编写go包(例如,参见src/pkg/runtime).因此,您可以在C或ASM中编写FFI作为go包.

编辑:从下面的评论(现在也CW)

或者,它可以使用syscallunsafe软件包完成(很容易在Windows中,但我想它在Linux中会更难,并且与上面的第三个解决方案相差不远).

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