为了账号安全,请及时绑定邮箱和手机立即绑定

Go 无法在 DLL 中找到过程

Go 无法在 DLL 中找到过程

Go
烙印99 2021-08-30 14:47:38
为什么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
提交
取消
意见反馈 帮助中心 APP下载
官方微信