go调用不同编译器编译的DLL返回值不同的问题

wn0112 · · 310 次点击 · 开始浏览    置顶

假如dll里的函数是这样: ```c double Add(int a, int b); ``` 用go调用dll ```go func main() { // 使用NewLazyDLL加载DLL dll := syscall.NewLazyDLL("example.dll") // 获取DLL中的函数句柄 proc, err := dll.NewProc("Add") if err != nil { fmt.Println("Error getting procedure handle:", err) return } var result, code uintptr var err error // 关键来了 // 如果dll是gcc(mingw)编译的,result是函数返回结果,code是个大整数,不知道是啥 // 如果dll是msvc编译的,result是0,code才是函数返回结果 // 无论哪个编译的, err 永远不为nil, 是字符 The operation successfuly,大概是这个 result, code, err = proc.Call(uintptr(3), uintptr(4)) if err != nil { fmt.Println("Error calling procedure:", err) return } } ``` 程序和dll是64位的

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

310 次点击  
加入收藏 微博
2 回复  |  直到 2024-03-13 17:04:50
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传