**前面有搜寻过这篇文章[超级链接]https://studygolang.com/topics/11167**
**但是发现传float(float32)的时候正常,但在传double(float64)时,dll那边都还是收到0.00000**
**我用c++写个sample的去调用dll的话也是正常的**
**下面是我的code,不知道哪里出了问题, 版本是`go1.15.2`**
**`tempPara` 是要传入`syscall.Syscall`的`uintptr`,`element.ParamValue`是字串 (ex. 1.23232)**
```go
tempVar, err := strconv.ParseFloat(element.ParamValue, 64)
if err != nil {
Log("string to double transform error: ", err)
//Log(conn.RemoteAddr().String(), " connection error: ", "")
return err
}
var tempDouble uint64 = math.Float64bits((float64)(tempVar))
tempPara = uintptr(tempDouble)
```
**C這邊也只是單純印出來而已**
```c++
void passDouble(double nLen)
{
printf("> src double: %f\n", nLen);
}
```
**有哪位高手能帮忙看看吗? 谢谢** :pray:
参考:https://blog.csdn.net/u010853261/article/details/103826830
uintptr 作为整数,不引用任何值, 所有不能把它作为返回值传递,如果要对它做运算也需要在一行语句完成
#8
更多评论
小声提示一句, 对于异构的系统,如果不是webservice, 那么最好的方案是传输字符串, 这样对发送方和接收方都很友好. 随便你怎么marshal 和unmarshal
#1
**因为是第三方的dll 无法修改,考虑到後續跨平台需求,所以其实是用Python(64 bit)当clinet,golang(32 bit) 当server端來调用第三方dll(32 bit)作使用 有点麻烦~** :joy:
#2