3

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

我搜索了一下,发现我可以使用 Boost.Python 或 SWIG 为 C++ lib 制作包装器。但是我还没有找到如何使用 SWIG 处理已经编译的 lib 的示例或手册。

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

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

4

1 回答 1

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

重要的是,您已链接-lmy到实现 .h 文件中的函数/类的库 ( ),但您必须正常执行此操作才能生成与 SWIG 的接口。

(如果您使用的是不同的编译器,您显然需要调整上述内容)

于 2013-09-19T20:35:21.050 回答