为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的动态FFI

Go中的动态FFI

Go
莫回无 2021-04-08 14:15:37
是否可以动态加载外部C库(dll)并在Go中调用其函数?我知道有cgo哪些用于静态绑定到C函数,但是我对动态方式感兴趣。
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

简短的回答:不。(至少不是与gc一起使用,但是gccgo是gcc可链接的,所以可能)

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

长答案:您可以使用go工具链C编译器和汇编器在C和ASM中编写go软件包(例如,参见src / pkg / runtime)。因此,您可以使用Go或C或ASM编写FFI。

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

另外,也可以使用syscallunsafe软件包来完成此操作(在Windows中很容易,但是我想在Linux中会更困难,并且与上面的第三个解决方案相距不远)。

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


查看完整回答
反对 回复 2021-04-26
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信