我正在編寫一個調用 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 中定義的符號。關于如何讓符號鏈接而不必走系統調用路線的任何建議?
Golang:調用 Windows DLL 函數
慕田峪7331174
2021-09-10 17:42:06