亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go (golang) 和 C++ 之間交換數據結構(數組)

在 Go (golang) 和 C++ 之間交換數據結構(數組)

Go
慕勒3428872 2021-09-13 17:01:44
我正在嘗試將 C++ 庫連接到用 Go 編寫的應用程序服務器。目標是 C++ 庫和應用程序服務器都在處理一個通用的數據結構,這意味著:Go 應用服務器可以訪問由 C++ 庫創建的數組。C++ 庫可以處理由 Go 應用服務器創建的數組。我在玩 cgo 并連接 C++,到目前為止一切正常......但是,當涉及到交換指向數據結構的指針時,我迷路了。到目前為止我嘗試過的://c++ library header: xyz.h#include <stdlib.h>class CppLib { public:  CppLib(unsigned int input);  int * CreateArray();};//C++ library implementation: xyz.cpp#include "xyz.h"CppLib::CppLib(unsigned int input) {    _input = input;  }int * CppLib::CreateArray() {    int values = 5;    int * myPointer = new int [values];    for (unsigned i = 0; i < values; ++i) {        myPointer[i] = i;    }    return myPointer;}接口實現如下所示://interface.hint * CCreateArray();//interface.cc#include "../lib/xyz.h"extern "C" {  int * CCreateArray() {    CppLib lib(1);    return lib.CreateArray();  }}最后,go 實現如下所示:package cgo_lib// #cgo CFLAGS: -I../lib// #cgo LDFLAGS: -L../lib -linterfacelib// #include "interface.h"import "C"func GoCreateArray() *int {    return *int(C.CCreateArray())}編譯時我收到以下錯誤:# cgo_lib../cgo_lib/cgo_lib.go:13: cannot convert _Cfunc_CCreateArray() (type *C.int) to type int../cgo_lib/cgo_lib.go:13: invalid indirect of int(_Cfunc_CCreateArray()) (type int)所以我的問題是:如何在 C++ 和 Go 之間交換指向數據結構的指針。上面我只是描述了從 C++ 到 GO 的方式,但我也對相反的方式感興趣。非常感謝您的幫助。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號