繁体   English   中英

将Python嵌入到C ++应用程序中

[英]Embedding Python into C++ application

语境:

我们一直面临的问题是对我们的市场数据应用进行单元测试。 这些应用程序坐下来观察从源中检索的数据并执行某些操作。 一些难以触发的关键事件很少发生,并且测试人员很难在所有情况下验证我们的应用程序是否正确执行,因此我们必须依赖于单元测试。

这些系统通常通过在事件发生时发出回调(进入我们的应用程序)来工作,然后我们的任务就是处理这个问题。

解决方案我设想:

是否可以嵌入Python或扩展(不是100%清楚),以便测试人员可以启动Python REPL并发出类似于回调的函数调用,然后由我们的C ++类处理。 在运行时对我们的对象进行某种形式的动态操作。

我在我的一个项目中做了类似的事情,使用SWIG为C ++代码的相关部分生成python绑定。 然后我按照其他人的建议嵌入了翻译。 完成后我可以随意执行python代码(例如PyRun_SimpleString ),它可以访问C ++代码。 通常我最终使用类似Singleton的东西来更容易地从python访问特定的C ++对象。

另外值得一提的是swig python模块中的导演 ,它允许更直观地处理虚拟功能。 根据您正在做的事情,您可能会发现这些非常有帮助。

你想做的事情是可能的,虽然不是很容易做对。 听起来你想要嵌入(而不是扩展)Python。 这两个主题均包含在本教程这里

从C ++类到Python类的映射有很多工作,并且有许多方面可能会以微妙的方式出错,尤其是内存泄漏和多线程(如果您的现有代码是多线程的)。 但是,如果它仅用于测试情况并且稳定性不是关键任务,那么它可能不是一个问题。

对的,这是可能的。 请参阅此内容

暂无
暂无

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

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