我有.so C ++库(没有源代码)和.h头文件,我想在一些Python项目中使用这个lib。
我已经开始搜索它,发现我可以使用Boost.Python或SWIG为C ++ lib创建一个包装器。但我还没有找到示例或手册如何使用SWIG处理已编译的lib。
至于Boost.Python我没有找到使用头文件自动包装所有函数的手册(仅找到如何包装,例如,一个函数)。
我正在寻找可以提供帮助的示例或链接。谢谢你的阅读。
答案 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>
(如果您使用的是其他编译器,则需要明确调整上述内容)