我正在编写一个调用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中定义的符号。
关于如何在不必使用系统调用路由的情况下获取符号链接的任何建议?
答案 0 :(得分:2)
如果您正在尝试链接您需要/想要的dll&#34; -lMyModule&#34;在LDFLAGS? https://stackoverflow.com/a/15853231/32453