C++库的 Python 包装器

Python wrapper for C++ Library

本文关键字:包装 Python 库的 C++      更新时间:2023-10-16

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

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

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

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

使用 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的接口。

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