我是 SWIG 的新手,想包装 C++ 类并在 python 中使用它。作为练习,我正在编写一个 Vector 类(类似于 STL 中的类)。现在我想在python环境中输入 vector 名称后打印出 vector 的元素。
它是这样的:
>>>v
1 2 3 4
我怎样才能做到这一点?
最佳答案
您可以在 .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 接口(interface)文件)
%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)
关于python - 如何编写 C++ 代码以使用 SWIG 在 python 提示符中打印变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775244/