我在使用swig为golang包装c ++库时遇到了麻烦。这是我的c ++头文件。
class Builder {
public:
explicit Builder(int i):counters(i){}
void Init();
void CreateCounters(vector<std::unique_ptr<int>>* s);
bool CreateEntry(string* primary_key);
private:
std::shared_ptr<hash_set<string>> ids;
int counters;
};
我只想包装Builder类及其构造函数Init()和CreateEntry函数。这是我的swig API
%{
#include "builder.h"
%}
%ignoreall
%unignore Builder;
%unignore Builder::Init();
%unignore CreateEntry(string* primary_key);
%include "builder.h"
%unignoreall
但是当我编译时,我得到指向CreateCounters函数的错误,该函数具有unique_ptr向量的参数。谁能告诉我这里有什么问题?
提前致谢:)
答案 0 :(得分:0)
您的swig文件没有模块名称。试试这个......
%module builder
%{
#include "builder.h"
%}
%ignoreall
%unignore Builder;
%unignore Builder::Init();
%unignore CreateEntry(string* primary_key);
%include "builder.h"
%unignoreall
模块名称转换为包装代码所在的包的名称。
同样对于c ++代码,请确保您的swig文件的名称类似于'builder.swigcxx',扩展名很重要,否则它会假设您正在包装纯C。