咕朗啤酒包装 我有麻烦使用SWIG来包装GalangC++的C++库。这是我的C++头文件。< /P> 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; };

咕朗啤酒包装 我有麻烦使用SWIG来包装GalangC++的C++库。这是我的C++头文件。< /P> 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; };,c++,go,swig,unique-ptr,C++,Go,Swig,Unique Ptr,但当我编译时,我得到了指向CreateCounters函数的错误,该函数的参数为unique_ptr vector。谁能告诉我这里怎么了 提前感谢:您的swig文件没有模块名。试试这个 %module builder %{ #include "builder.h" %} %ignoreall %unignore Builder; %unignore Builder::Init(); %unignore CreateEntry(string* primary_key); %include "

但当我编译时,我得到了指向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。SigigCxx”。扩展是很重要的,否则它会假设你正在包装纯C.< /P>请在帖子中包含整个错误信息。我在内部系统中使用了SWIG。虽然错误消息:Builder:H::错误:输入5中的语法错误指向CealCeCuter函数。您的内部系统是否通过-C++参数来SWIG来告诉它它是包C++的?而且,AFAIK %IGORALL等等都不是有效的SWIG指令,在任何情况下,它们都可能需要一个分号。

%module builder
%{
#include "builder.h"
%}

%ignoreall

%unignore Builder;
%unignore Builder::Init();
%unignore CreateEntry(string* primary_key);

%include "builder.h"

%unignoreall