我有一个库和一些头文件,没有C++源代码,我想用它与python。 我试过py ++,但是gccxml报告错误。 我试过swig,但有些许多“未定义符号”错误。 有没有一些智能工具可以自动做这样的事情?如何为python包装一个C++库?
回答
你可以尝试使用boost python
你需要创建一个简单的包装DLL链接到你原来的库,包含类似下面的代码(假设你要导出一个名为LibraryClass类2个功能,FOO &吧)
#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++定义在头文件和为你做的辛勤工作,但依据升压蟒蛇页面这里不再维持,所以我我不确定它的工作效果。
自动代码生成器使用gccxml,但gccxml报告头文件中存在一些错误。 – WhatisThat
您可以尝试发布关于您从gccxml获得的错误的单独问题。也许有人可以帮助。 – obmarg
这种方法需要一点工作,如果你有很多函数,你想要打包/函数使用很多C++内在类型作为参数/返回值,可能是不可行的。
如果不是这种情况,可以使用纯c参数和返回类型定义一些c-wrapper函数,在它们前面带有“extern c”关键字。编译并将“包装函数”链接到C++库。然后你可以使用ctypes模块(来自python)来调用你的包装函数,然后调用库中的C++函数。
也许,这个想法并不坏。谢谢你 – WhatisThat
- 1. 如何为一个DLL库创建一个Python包装
- 2. 如何正确包装一个C库与Python CFFI
- 3. 如何为一个简单的c库生成一个cffi包装
- 4. 使用jni包装一个C++库
- 5. 为C++库制作一个Objective-C包装器
- 6. 如何在C++包装库中传播C++异常到Python?
- 7. 如何编写一个java库的python包装
- 8. 如何在Objective-C中包装C++库?
- 9. 如何为C++函数创建一个c#包装器?
- 10. 从Python的使用C:如何创建一个ctypes包装
- 11. 如何开发一个C代码的python包装?
- 12. 用于UDT C++库的Python包装器
- 13. KONSOLE有一个PYTHON包装?
- 14. 为Lua包装一个C库:我如何创建函数的嵌套表?
- 15. 我应该如何包装的C库为C++
- 16. 在C中包装一个C++库? (不要“extern c”)
- 17. C++创建一个“包装”
- 18. 如何包装一个ngRepeat
- 19. 在Python中为C#库创建包装器
- 20. 使用Cython打包一个包装另一个库的库
- 21. Python的颠覆包装库
- 22. 我如何包装两个库在Xcode 4到另一个库,并使用包装库
- 23. 如何开始在另一个包装器上编写python包装?
- 24. 如何在两个函数的python中创建一个包装?
- 25. 为cout做一个包装?
- 26. 如何包装一个C#DLL在qt C++中使用?
- 27. Python包装到C回调
- 28. 在Python包装和用C
- 29. C++包装器C库作为共享库
- 30. 如何包装python字典?
swig ++,boost python – sehe