Go 调用dll中的函数,如何传递double 型的参数?

wn0112 · 2020-04-01 17:08:12 · 3146 次点击

没事,起初我以为是你不会调用dll,然后没考虑到uintptr这个问题。后来我是看到群里有人说go传double有问题,我才研究了一下

#6
更多评论

double 不就是float64 吗

#1

go调用dll 方法

var (
    moddll  = syscall.NewLazyDLL("test.dll")
    procDiv = moddll.NewProc("div")
)

func main() {
    Div(1.33, 2.22)
}

func Div(a, b float64) float64 {
    r1, _, _ := syscall.Syscall(procDiv.Addr(), 2, uintptr(a), uintptr(b), 0)
    return float64(r1)
}
#2