我有一个库和一些头文件,没有c ++源代码,我想用python来使用它。 我试过py ++,但gccxml报告错误。 我试过swig,但有一些“未定义的符号”错误。 是否有一些智能工具可以自动完成这些工作?
答案 0 :(得分:2)
您可以尝试使用boost python
您需要创建一个链接到原始库的简单包装器DLL,其中包含与此类似的代码(假设您要导出一个名为LibraryClass的类,其中包含2个函数,foo& bar)
#include <librarytowrap.h>
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(Library)
{
class_<LibraryClass>("LibraryClass")
.def("foo", &LibraryClass::foo)
.def("bar", &LibraryClass::bar)
;
}
您可以使用the automatic code generator来读取头文件中的C ++定义并为您做好工作,但根据boost python页面不再维护,所以我不确定如何它有效。
答案 1 :(得分:1)
答案 2 :(得分:0)
这种方法需要一些工作,如果你有很多函数可能不可行,你想要包装/函数使用很多c ++内部类型作为参数/返回值。
如果不是这种情况,你可以定义一些c-wrapper函数,在它们前面加上“extern c”关键字,使用纯c参数和返回类型。编译并将“包装函数”链接到c ++库。然后你可以使用ctypes模块(来自python)来调用你的包装器函数,然后调用你的库中的c ++函数。