使用SWIG生成的python库时,矢量分配器参数错误

时间:2017-09-24 18:23:27

标签: python c++ list vector swig

我使用过SWIG并从C ++代码生成了一个python库,遇到以下错误:

  

TypeError:在方法'new_SpikeGeneratorFromVector'中,参数1的类型为'std :: vector<整型,性病::分配器< int> >'

我已经包含了接口文件std_vector.i和stl.i以及其他一些看起来必要的内容。当我将整数列表传递给函数时,我得到上述错误。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

/* File : example.i */

%module example

%{
#include "example.h"
%}

%include "std_vector.i"
namespace std {
    %template(IntVector)    vector<int>;
}

%include "example.h"

/*example.h*/
void my_func(std::vector<int> v) 
{
    for (int i=0; i<v.size(; i++))
        std::cout<<v[i]<<"\n";
}

/*in runme.py*/

import example
# call with a python list:
print example.my_func([1, 2, 3, 4])
#call with a python tuple:
print example.my_func((1, 2, 3, 4))
# ... or a wrapped std::vector<int>

v = example.IntVector(4)
for i in range(len(v)):
    v[i] = i + 1
print example.my_func(v)