我正在用python创建一个仿真工具,并且需要一个c ++库。我该如何与python接口库?该库很大,但是我只想调用一些函数和类成员函数。
到目前为止,为了使自己熟悉该过程,我已经在较小的C ++代码上使用ctypes和SWIG感到厌倦。
对于ctypes,必须已经将c ++库编译成共享库,这不是问题。我已经使用ctypes从共享库中调用c ++函数,但是可以使用ctypes来调用类成员函数吗?
如果我使用SWIG,是否必须在接口文件中包含c ++库的所有头文件,还是仅包含包含所需功能的头文件?
答案 0 :(得分:0)
ctypes
可以调用C接口或extern "C"
的C ++接口,但不能理解C ++特定的类,例如std::string
或成员函数。
对于SWIG,您可以仅在SWIG接口文件中包含要公开给Python的标头。例如:
%module example
%{
// This section is copied into the wrapper so the generated code can compile.
// No wrappers are generated from this.
#include "myheader1.h"
#include "myheader2.h"
%}
%include "myheader1.h" // Wrap all functions directly declared in this header.
int myfunc(int a, int b); // Wrap only this one function in myheader2.h.