求救~Go 调用dll,如何传递double 型的参数?(搜寻过解决方式,math.Float64bits似乎無效?)

garyjywu · · 1260 次点击
我这里测试了,按你的写法没有问题. ```cpp int hello(double a) { return int(a * 1000); } ``` ```go dll := syscall.MustLoadDLL("C:\\Users\\ADMIN\\CLionProjects\\make_dll\\cmake-build-release-cygwin\\cygmake_dll.dll") var a = 1.111 var tempDouble = math.Float64bits(a) call, u, err := dll.MustFindProc("hello").Call(uintptr(tempDouble)) fmt.Println(call, u, err) ``` ``` 1111 4652601045120188416 The operation completed successfully. ```
#11
更多评论
小声提示一句, 对于异构的系统,如果不是webservice, 那么最好的方案是传输字符串, 这样对发送方和接收方都很友好. 随便你怎么marshal 和unmarshal
#1
**因为是第三方的dll 无法修改,考虑到後續跨平台需求,所以其实是用Python(64 bit)当clinet,golang(32 bit) 当server端來调用第三方dll(32 bit)作使用 有点麻烦~** :joy:
#2