我正在嘗試將 C++ 庫連接到用 Go 編寫的應(yīng)用程序服務(wù)器。目標是 C++ 庫和應(yīng)用程序服務(wù)器都在處理一個通用的數(shù)據(jù)結(jié)構(gòu),這意味著:Go 應(yīng)用服務(wù)器可以訪問由 C++ 庫創(chuàng)建的數(shù)組。C++ 庫可以處理由 Go 應(yīng)用服務(wù)器創(chuàng)建的數(shù)組。我在玩 cgo 并連接 C++,到目前為止一切正常......但是,當涉及到交換指向數(shù)據(jù)結(jié)構(gòu)的指針時,我迷路了。到目前為止我嘗試過的://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;}接口實現(xiàn)如下所示://interface.hint * CCreateArray();//interface.cc#include "../lib/xyz.h"extern "C" { int * CCreateArray() { CppLib lib(1); return lib.CreateArray(); }}最后,go 實現(xiàn)如下所示: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 之間交換指向數(shù)據(jù)結(jié)構(gòu)的指針。上面我只是描述了從 C++ 到 GO 的方式,但我也對相反的方式感興趣。非常感謝您的幫助。
- 1 回答
- 0 關(guān)注
- 171 瀏覽
添加回答
舉報
0/150
提交
取消