Swig:将一个向量<float>从c ++传递给python

时间:2015-10-12 13:07:45

标签: python swig

我想用C ++编写一些代码,它向python返回一个向量。我尝试了以下示例,但它返回以下对象。

<Swig Object of type 'std::vector< float > *' at 0x100331f90>

如何将其转换为列表以便我可以在python中使用它?

我的代码:

/* File: example.i */
%module example

%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}

std::vector<float> Test(int n);

/* File: example.cpp */

#include <vector>

std::vector<float> Test(int n){

    std::vector<float> a(4);
    a[1] =  1;
    a[2] = 24234;
    return a;
}

/* File: example.h 
http://www.swig.org/Doc1.3/Python.html#Python_nn4
*/

#include <vector>
std::vector<float> Test(int n);

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案。为这个问题找到合适的关键词很难。

解释了解决方案here

%include <std_vector.i> //Takes care of vector<type>

仍然缺少的是以下三行

namespace std
{
    %template(FloatVector) vector<float>;
}

总的来说,我的例子。我现在看起来像这样:

/* File: example.i */
%module example
%include "std_vector.i"

%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}

namespace std
{
  %template(FloatVector) vector<float>;
}


std::vector<float> Test(int n);