c++程序中函数的Python绑定
Python binding of functions within a c++ program
我有一个用c++编写的程序,它可以独立运行,但我们希望让Python可以访问它。具体来说,我们有几个函数在c++中更高效,但我们使用Python脚本对输出做了很多其他事情。我不想在Python中重写整个main(),因为我们使用Boost的根查找算法和其他在Python中很难做到的功能。
是否可以在保留c++main()的同时向这些函数添加Python绑定?我以前从未做过Python绑定,但我看过Boost.Python,因为我们已经在使用Boost了。大多数示例在hpp文件中使用c++函数/类,并将它们嵌入到python程序中,这并不是我们想要的。
我们想要的是保持我们的c++程序作为一个独立程序,这样如果用户愿意,它就可以按原样运行,还允许用户从Python程序中调用这些函数。能够使用相同的Makefile和exe将是非常棒的。我们并不是真的想制作一个包含绑定函数的单独的c++库;我们对制作Python版本的代码不感兴趣,只允许访问这些有用的函数。
感谢
我们有一个广泛的c++库,我们通过使用python包装器类使其可用于python,该类调用我们在boost python中定义的接口。
一个python类以python的方式处理所有查询,方法是使用boostpython调用用c++编写的python扩展模块。python扩展执行c++代码,因此它可以链接和使用原始库中的任何内容。
不过你说你的c++是一个可执行程序。为什么不能使用系统调用来启动shell进程?你可以用任何语言做到这一点,包括python。我的想法是,你想访问单个函数,这意味着你需要在一个静态库中访问所有函数。
您可以正常构建您的c++exe,链接公共代码。您制作了一个"boost-python扩展模块",链接公共代码,并可以通过python脚本导入。当然还有一个单元测试可执行文件,它链接并测试公共代码。我的偏好是公共代码是一个独立的静态lib(如果有posix-gcc构建,请使用-fPic)。
- 创建一个函数的 Python 绑定,返回指向带有 boost 的向量的指针
- 如何将 compile_commands.json 与 llvm clang (版本 7.0.1) python 绑定一
- 用于基于节点的树结构的Python绑定
- OpenCV 如何确定具有不同参数的函数的 python 绑定?
- 使用 python 绑定来检查 C++ 类型是否是规范方式的指针、引用等?
- 生成python绑定,要使用的方法/程序
- 如何使用Python绑定到Clang来解析单个文件
- 为使用OpenCV的C 代码编写Python绑定
- C/Python绑定:指针地址修改
- 类的Boost Python绑定向量
- 用于C++运算符重载的Python绑定
- 使用 mingw 和 msis 编译带有 Python 绑定的 c++ 时出错
- 使用带有python绑定的boost在osx上构建32位版本的libtorrent
- 如何解决 clang 的 Python 绑定的加载错误?
- Python+setuptools:分发一个带有boost.Python绑定的预编译共享库
- Python绑定似乎是空的
- 由Libclang的python绑定生成的AST无法解析c++源代码中的某些令牌
- 如何在c++文件中使用opencv函数并将其与Python绑定
- 在使用 Boost 的 c++ python 绑定过程中无法找出错误
- 我们可以使用SWIG为Qt应用程序制作python绑定吗