繁体   English   中英

Python绑定C ++程序中的函数

[英]Python binding of functions within a c++ program

我有一个用c ++编写的程序,它本身具有功能,但是我们希望它可以被Python访问。 具体来说,我们有几个在c ++中效率更高的函数,但是我们使用Python脚本对输出进行了很多其他处理。 我不想用Python重写整个main(),因为我们利用了Boost的根查找算法和其他功能,而这些功能在Python中是很难做到的。

是否可以在保留c ++ main()的同时向这些函数添加Python绑定? 我以前从未做过Python绑定,但是由于我们已经在使用Boost,因此我查看了Boost.python 大多数示例在hpp文件中使用c ++函数/类并将其嵌入到python程序中,这并不是我们想要的。

我们想要的是保持我们的c ++程序独立,以便它可以按用户要求运行,并且还允许用户从Python程序调用这些函数。 能够使用相同的Makefile和exe会很棒。 我们并不是真的想制作一个包含绑定函数的单独的c ++库。 我们对制作pythonic版本的代码不感兴趣,仅允许访问这些有用的功能。

谢谢

我们有一个扩展的c ++库,可通过使用python包装器类将其提供给python,该包装器类调用在boost python中定义的接口。

一个python类通过调用带有boost python用c ++编写的python扩展模块,以pythonic方式处理所有查询。 python扩展执行c ++代码,因此它可以链接和使用原始库中的任何内容。

您说您的c ++是可执行文件。 为什么不能使用系统调用来启动Shell进程? 您可以使用任何语言(包括python)来执行此操作。 我以为您要访问单个功能,这意味着您需要在静态库中使用所有功能。

您通常会链接通用代码来构建c ++ exe。 您将制作一个“ boost python扩展模块”,该模块链接通用代码,并且可以通过python脚本导入。 当然还有一个单元测试可执行文件,它链接和测试通用代码。 我的喜好是,通用代码应为独立的静态库(如果有posix gcc构建,请使用-fPic)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM