c++ - C++ 库的 Python 包装器

标签 c++ python boost swig

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

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

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

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

最佳答案

使用 SWIG 包装仅包含头文件和 DLL/SO 的库与使用 SWIG 包装任何其他库没有什么不同。在最基本的形式中,您将定义一个接口(interface):

%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 文件中的函数/类,但是你必须正常地这样做才能生成一个接口(interface)使用 SWIG。

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

关于c++ - C++ 库的 Python 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797465/

相关文章:

c++ - boost iostream问题

c++ - 运算符==重载

Python 预提交单元测试失败

python - Django float 格式只得到 float 后的数字

python - 使用 Bonobo-ETL 将字典写入 CSV

c++ - 如何比较 boost::variant 以使其成为 std::map 的键?

c++ - 从二进制文件(进入类)读取 double - 小数不显示

c++ - 快速可靠的反射球检测方法

c++ - Windows API 钩子(Hook) C++

c++ - parent_path() 带或不带斜杠