我目前正在使用 CGO 通过 DLL 使用 C 中的库。一切正常,我可以在库之上使用我的代码,构建它等等。
我遇到的问题是用 DLL 实现测试。现在我的项目看起来像:
项目
binding.go <- 定义 CGO 绑定
探针.go
probes_test.go <- 使用包含 C defs 的结构
蜜蜂/
库/
主程序
我的库.dll
所以我的 lib 文件夹有所有 CGO 绑定和一个 Go 结构在它上面(作为一种包装)。并且探测器正在使用这个包装器来公开一些信息。
这样做的问题go test
是执行上下文是在包内设置的。这意味着 probes_test.go 在 apis/ 上下文中执行并且看不到 DLL。使测试失败并具有特殊的退出状态。
解决方法是暂时复制包中的 dll,例如:
项目
绑定.go
探针.go
探针测试.go
myLib.dll <- 已复制
蜜蜂/
库/
主程序
我的库.dll
这行得通(测试通过)但是很笨拙而且不干净。我还尝试将 DLL 仅放在 lib/ 中,但两者都不起作用。
您是否有办法指定 DLL 位于其他文件夹中以进行测试?
慕斯王
相关分类