SWIG是 Simplified Wrapper and Interface Generator的英文首字母简写,用它可以简单方便的实现python调用C++的功能
首先看看C++中的实现
class Test
{
public:
void myTest() {printf(just a test);}
};
要让python能够调用这个函数,做以下几步
1 编写一个swighelper.h的文件,这个让swig知道要导出些什么东西,只要函数声明就好了。
class swighelper
{
public:
void myTest();
};
2 编写swig的接口文件(后缀名为.i)的文件 test.i
%module PythonAccessCPPTest
%include "swighelper.h"
3 运行cmd命令,执行 swig.exe -c++ python test.i
成功后会生成以下2个文件
1 PythonAccessCPPTest.py
2 PythonAccessCPPTest_wrap.cxx
第一个文件是给python用的。
第2个文件包括在main.cpp里面,并且在初始化python以后调用SWIG_init();
然后创建对应的python类实例,通过调用该类实例来实现python和C++的相互调用。
这里在生成第2个文件的时候不能直接放到工程里面编译,要在.cpp文件里面#include PythonAccessCPPTest_wrap.cxx
如果编译通不过可能不没有在 PythonAccessCPPTest_wrap.cxx里面#include "swighelper.h"