跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • golang 调用 c++ dll 如何取得返回值
未分類
4 2 月 2021

golang 调用 c++ dll 如何取得返回值

golang 调用 c++ dll 如何取得返回值

資深大佬 : i4color 7

以下是 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) }

大佬有話說 (5)

  • 資深大佬 : ysc3839

    C++ 的导出函数一般不能跨语言调用吧,要调用的话需要包装成 C 的函数。

  • 資深大佬 : dswyzx

    如果 golang 不支持,那么写个 c#调用然后暴露成 webapi ?曲线救国

  • 主 資深大佬 : i4color

    @ysc3839 可以的。我试了另一个无参数的,就可以取得返回值,只不过他不是引用参数

  • 主 資深大佬 : i4color

    可以了,取错值了,它直接把 vref2 这个变量改了。

  • 資深大佬 : hotsymbol

    官方就有文档,https://github.com/golang/go/wiki/WindowsDLLs

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具