用于C ++库的Python包装器

时间:2013-09-14 01:40:05

标签: c++ python boost swig

我有.so C ++库(没有源代码)和.h头文件,我想在一些Python项目中使用这个lib。

我已经开始搜索它,发现我可以使用Boost.Python或SWIG为C ++ lib创建一个包装器。但我还没有找到示例或手册如何使用SWIG处理已编译的lib。

至于Boost.Python我没有找到使用头文件自动包装所有函数的手册(仅找到如何包装,例如,一个函数)。

我正在寻找可以提供帮助的示例或链接。谢谢你的阅读。

1 个答案:

答案 0 :(得分:2)

SWIG用一个头文件包装一个库,一个DLL / SO与用SWIG包装任何其他库没什么不同。在最基本的形式中,您将定义一个界面:

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

%include "my.h"

然后你运行SWIG:

swig -python my.i

编译

gcc -Wall my_wrap.c -shared -o _my.so -lpython -I/path/to/python -lmy

重要的是你已经链接到实现.h文件中的函数/类的库(-lmy),但是你必须这样做才能生成一个带SWIG的接口。 / p>

(如果您使用的是其他编译器,则需要明确调整上述内容)