如何编写C ++代码以使用SWIG在python提示符中打印变量值

时间:2014-09-10 21:17:34

标签: python c++ swig

我是SWIG的新手,想要包装C ++类并在python中使用它。作为练习,我正在编写一个Vector类(类似于STL中的类)。现在我想在python环境中输入向量名后打印出向量的元素。

类似于:

>>>v
1 2 3 4

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以在.i文件中使用%template指令和std_vector.i库。

参考:http://www.swig.org/Doc3.0/SWIGDocumentation.html#Library_std_vector

myModule.h文件(C ++头文件)

#include <vector>

std::vector<int> GetVectorInt();

myModule.cpp文件(C ++源文件)

std::vector<int> GetVectorInt()
{
    std::vector<int> vOutput;

    for(int i = 0; i < 10; i++)
        vOutput.push_back(i);

    return vOutput;
}

myModule.i文件(SWIG接口文件)

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

%include "std_vector.i"

%template(IntVector) std::vector<int>;

%include "myModule.h"

Python输出

>>> my_vector = myModule.GetVectorInt()
>>> my_vector
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)