我有 .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/