Golang:调用 Windows DLL 函数
Golang: call Windows DLL functions
我正在编写一个调用 Windows DLL 的 Go 应用程序。该 DLL 是用 MSVC 编写的,并使用 __declspec(dllexport).
导出了 extern "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.
中定义的符号
关于如何将符号获取到 link 而无需通过系统调用路径的任何建议?
如果您尝试link 反对您在 LDFLAGS 中 need/want“-lMyModule”的 dll?
我正在编写一个调用 Windows DLL 的 Go 应用程序。该 DLL 是用 MSVC 编写的,并使用 __declspec(dllexport).
导出了 extern "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.
中定义的符号关于如何将符号获取到 link 而无需通过系统调用路径的任何建议?
如果您尝试link 反对您在 LDFLAGS 中 need/want“-lMyModule”的 dll?