为什么Go在dll中找不到指定的程序?我有一个my.dll为 Windows x86 编译的库(操作系统是 Windows 7 x64;但我使用的是 Go x86 二进制文件 - 带有 LiteIDE - 并且 C# 代码也是为 x86 架构显式编译的)。我从 C# 中使用它并且它有效:[DllImport("my.dll", EntryPoint = "my_function")]public static extern double my_function(double x);但是当我尝试从 Go 使用它时(在这里我只是想找到它):var ( dllMine = syscall.NewLazyDLL("my.dll") my_function = dllMine.NewProc("my_function"))func main() { err := my_function.Find() if err != nil { fmt.Println(err) return } //...}它说Failed to find my_function procedure in my.dll: The specified procedure could not be found.。该my.dll文件与生成的文件位于同一目录中.exe。入口点名称 ( "my_function") 确实存在,因为它在 C# 中导入时工作正常并且没有说Failed to load my.dll: The specified module could not be found..实际部分:我试图调用swedll32.dll的库是瑞士星历的核心库(可以在这里下载- GNU),只是为了测试这个场景,被调用的函数是swe_julday;使用此签名重现错误:double swe_julday( int year, int month, int day, double hour, int gregflag); /* Gregorian calendar: 1, Julian calendar: 0 */另一件事是我的GOROOT环境参数实际上是一个 NTFS 连接点(所以我可以在 x86 和 x64 版本之间切换) - 但我认为它不相关,因为输出.exe应用程序正在生成没有任何问题(只是为了承认所有我的罪过!)。
1 回答
- 1 回答
- 0 关注
- 698 浏览
添加回答
举报
0/150
提交
取消