以下是 c++的方法,其中 iResult 是可以返回的,我该如何传入和取出? CreateITapTradeAPI(const ITapTrade::TapAPIApplicationInfo *appInfo, ITapTrade::TAPIINT32 &iResult);
我现在的写法: vref2 := 0 var ref2 = uintptr(unsafe.Pointer(&vref2) ret, b, err := funcresult.Call(ref1, ref2)
没有报错,但不知道如何取得 传出的值
这样试过,好像不对 presult := (*byte)(unsafe.Pointer(ref2)) if (presult != nil) { data := make([]byte, 0)
for *presult != 0 { data = append(data, *presult) ref2 += unsafe.Sizeof(byte(0)) presult = (*byte)(unsafe.Pointer(ref2))
resultcode := binary.BigEndian.Uint32(data) //bytesBuffer := bytes.NewBuffer(data) //var tmp int32 //binary.Read(bytesBuffer, binary.BigEndian, &tmp) println(resultcode) }
1
ysc3839 2021-01-25 20:33:18 +08:00 via Android
C++ 的导出函数一般不能跨语言调用吧,要调用的话需要包装成 C 的函数。
|
2
dswyzx 2021-01-25 21:10:10 +08:00 via iPhone
如果 golang 不支持,那么写个 c#调用然后暴露成 webapi ?曲线救国
|
4
i4color OP 可以了,取错值了,它直接把 vref2 这个变量改了。
|
5
hotsymbol 2021-01-26 01:22:08 +08:00
|