Go
与C++
的互操作性(例如,here),并且通常已经证明可以包装C++
函数C
函数中,然后将C
函数包装在CGO
函数中。这是在C++
应用程序中使用Go
代码的方式。但是,大多数示例仅考虑具有原始数据类型参数(例如int
或char *
)的函数。
但是,如果C++
函数希望传递std::vector
或std::set
之类的STL容器怎么办? C
中没有等效项,因此我不知道从C
到C++
的传递方式。
static Status GetApproximateMemoryUsageByType(
const std::vector<DB*>& dbs,
const std::unordered_set<const Cache*> cache_set,
std::map<MemoryUtil::UsageType, uint64_t>* usage_by_type);
UPD
仅供参考,以下是此问题如何solved的示例。这是RocksDB C++ API
中的实函数。为了在Go
中使用它,应该将其包装在以C++
编写的函数(或多个函数)中,但看起来就像是用普通的C
编写的一样。这些包装器将针对Go
个二进制链接编译到库中。