用于golang的Swig包装器

时间:2015-11-10 01:20:32

标签: c++ go swig unique-ptr

我在使用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向量的参数。谁能告诉我这里有什么问题?

提前致谢:)

1 个答案:

答案 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。