gpt4 book ai didi

c - Go 中的动态 FFI

转载 作者:IT老高 更新时间:2023-10-28 13:10:54 24 4
gpt4 key购买 nike

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

我知道有 cgo 用于静态绑定(bind)到 C 函数,但我对动态方式感兴趣。

最佳答案

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

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

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

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

或者,可以使用 syscallunsafe 包来完成(在 windows 中很容易,但我想在 linux 中会更难,离第三个不远上面的解决方案)。

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

关于c - Go 中的动态 FFI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com