轻扫golang包装纸

Swig wrapper for golang

本文关键字:包装纸 golang 轻扫      更新时间:2023-10-16

我很难使用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函数。这是我的痛饮API

%{
#include "builder.h"
%}
%ignoreall
%unignore Builder;
%unignore Builder::Init();
%unignore CreateEntry(string* primary_key);
%include "builder.h"
%unignoreall

但当我编译时,我在指向CreateCounters函数时遇到错误,该函数的参数为unique_ptr vector。有人能告诉我这里出了什么问题吗?

提前感谢:)

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。