ddd.h文件
using namespace std;
#include <vector>
#include <algorithm>
#include <functional>
#include <numeric>
#include <iostream>
#include <assert.h>
#include <cstring>
vector<bool> comparer_cpp(vector<vector<string> > v, vector<string> v0);
ddd.i文件
%module ddd
%{
#define SWIG_FILE_WITH_INIT
#include "ddd.h"
%}
%include "std_vector.i"
namespace std {
%template(Line) vector<string>;
%template(Array) vector<vector<string> >;
}
%{
extern vector<bool> comparer_cpp(vector<vector<string> > v, vector<string> v0);
// extern vector<string> Line;
// extern vector<vector<string> > Array;
%}
%include ddd.h
extern vector<bool> comparer_cpp(vector<vector<string> > v, vector<string> v0);
// extern vector<string> Line;
// extern vector<vector<string> > Array;
ddd.cpp文件
#include "ddd.h"
// vector<bool> comparer_cpp(const vector<vector<string> >& v, const vector<string>& v0) {
vector<bool> comparer_cpp(vector<vector<string> > v, vector<string> v0) {
vector<bool> result;
for(unsigned int i=0;i<v.size();i++)
{
result.push_back((v0==v[i]));
}
// for(unsigned int i=0;i<result.size();i++)
// {
// cout<<result[i]<<endl;
// }
return result;
}
编译过程没有错误
<>但是,当我测试代码时,我不能把python列表传递给C++向量>>> import ddd
>>> ddd.Line(["F06", "H10", "R07"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/young/Downloads/temp/cpp_swig_test/swig/ddd.py", line 201, in __init__
_ddd.Line_swiginit(self, _ddd.new_Line(*args))
TypeError: Wrong number or type of arguments for overloaded function 'new_Line'.
Possible C/C++ prototypes are:
std::vector< string >::vector()
std::vector< string >::vector(std::vector< string > const &)
std::vector< string >::vector(std::vector< string >::size_type)
std::vector< string >::vector(std::vector< string >::size_type,std::vector< string >::value_type const &)
我的最终目标是比较两个向量并得到以下结果
vec1d=ddd.Line(["F06", "H10", "R07"])
vec2d=ddd.Line([["F06", "H10", "R07"], ["F06", "H10", "L20"], ["F06", "H10", "S12"]])
result_tuple=ddd.comparer_cpp(vec2d,vec1d)
请纠正我的错误
SWIG既需要
std_string.i
来理解std::string
,也需要std::vector<bool>
的模板。下面是一个经过测试的示例:ddd.i
test.py
输出:
尝试为带有
%include "std_string.i"
的字符串包含相关的SWIG代码相关问题 更多 >
编程相关推荐