登录
首页 >  Golang >  Go问答

从动态链接库(DLL)中获取返回值为double类型的函数方法

来源:stackoverflow

时间:2024-03-14 17:36:25 462浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《从动态链接库(DLL)中获取返回值为double类型的函数方法》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我有一个带签名的 windows dll(win32 构建)

double pascal export getdata(dword dn, dword channel, dword type, dword aver, dword parn);

它总是从 00.00 返回值到 100.00,我尝试从 go 调用它

var err error
var rt, rt2 uintptr

dll := syscall.NewLazyDLL("SomeLib.dll")
rt, rt2, err = dll.NewProc("O110_GetData").Call(
    uintptr(int(0)),
    uintptr(int(0)),
    uintptr(int(2)),
    uintptr(int(6)),
    uintptr(int(2)))

log.Printf("RT2.3=", math.Float32frombits(uint32(rt2)))
log.Printf("RT2.4=", math.Float64frombits(uint64(rt2)))

正如我所见,值在 rt2 中返回。 但我得到了不可能的结果。

如何将 uintptr 中的结果 (double) 转换为 float32


解决方案


据我了解,这是一个错误 - 目前在 GO 上不可能从 Windows DLL 获得双重结果

到这里,我们也就讲完了《从动态链接库(DLL)中获取返回值为double类型的函数方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>