我有 .so C++ 库(没有源代码)和 .h 头文件,我想在一些 Python 项目中使用这个库。
我搜索了一下,发现我可以使用 Boost.Python 或 SWIG 为 C++ lib 制作包装器。但是我还没有找到如何使用 SWIG 处理已经编译的 lib 的示例或手册。
至于 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
重要的是,您已链接-lmy
到实现 .h 文件中的函数/类的库 ( ),但您必须正常执行此操作才能生成与 SWIG 的接口。
(如果您使用的是不同的编译器,您显然需要调整上述内容)