Golang:调用Windows DLL函数

问:

我正在编写一个调用Windows DLL的Go应用程序。该DLL是使用MSVC编写的,并且使用__declspec(dllexport)具有外部“ C”导出。

我的Go应用程序的顶部如下:

//#cgo CFLAGS: -IC:/Repos/Module/include
//#cgo LDFLAGS: -L. C:/Repos/Module/go/bin/MyModule.dll
//#include <MyModule.h>
import "C"

我从这样的模块中调用函数:

nRet := C.moduleImpl_len()

问题是,当我尝试运行此应用程序时,出现以下错误:

C:\Users\MINDO~1\AppData\Local\Temp\go-build836751819\mod\modimpl\_obj\modimpl.cgo2.o: In function `_cgo_e2aaf076ab69_Cfunc_moduleImpl_len':
C:/Repos/Module/go/src/mod/modimpl/modimpl.go:90: undefined reference to `moduleImpl_len'

我用DUMPBIN查看了DLL导出的符号,它确切显示了“ moduleImpl_len”作为导出的符号。这也是MyModule.h中定义的符号。

关于如何不必通过syscall路由即可获取符号链接的任何建议?

rogerdpack:

如果您尝试链接到DLL,则需要/想要LDFLAGS中的“ -lMyModule”?https://stackoverflow.com/a/15853231/32453

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章