c++扩展python

最近要将一些现成的c++函数导入到python里面做点验证,于是尝试用swig来完成。网上的例子很多,但是对于编译过程不熟悉的我可以忙活了很久才弄完。做点笔记...

1. 使用swig 2.0。

2. 准备c++代码。

    包括cpp和h文件(只有两个,多文件还不会)。cpp中是各种函数的实现(类的实现还没试),h文件中用extern 来声明所有这些函数。

/×example.cpp×/

#include <math.h>

double msum(double a[3])

{

    return a[0] + a[1] + a[2];

}

/*example.h*/

extern double msum(double a[3]);

3. 准备interface文件(.i文件)

    在这个文件中需要声明一些内容。顺便说一下,关于数组的使用。swig本身提供了使用数组的库,carrays.i。

/*example.i*/

/* File : example.i */
%module example
%{
/* Put headers and other declarations here */
#include "example.h"
%}
%include"carrays.i"
%array_class(double, doubleArray);
%include "example.h"

4. 编译过程

 编译过程需要用到Python.h。

swig -python -c++ example.i
g++ -c -fpic example_wrap.cxx -I ~./include/python2.7
g++ -c -fpic example.cpp
g++ -shared example.o example_wrap.o -o _example.so
rm *.o
rm *.cxx





你可能感兴趣的:(C++,python,swig)