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

标签 c++ python boost

上下文:

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

这些系统通常通过在事件发生时发出回调(到我们的应用程序中)来工作,然后我们的任务来处理它。

我设想的解决方案:

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

最佳答案

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

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

关于c++ - 将 Python 嵌入到 C++ 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971928/

相关文章:

c++ - 具有非固定类型的枚举的初始值设定项

python - 如何使用 Python pathlib 处理文件名中的多个点?

python - 如何在Python中实现这个R泊松分布?

c++ - boost::hash_combine 在 Release模式下失败

c++ - MongoDB c++ 遗留驱动程序 1.1.2 不工作 - 使用 VS2013、Win 10、boost-1_62 编译

c++ - boost.enable_shared_from_this 并创建另一个 shared_ptr<T>

c++ - 返回 *this 和 this 之间的区别 - C++

c++ - 如何将较大数字中 0 到 9 的各个数字放入仅包含数字的数组中

c++ - 在用户定义的对象上调用 std::find 时出错

python - 如何等待页面在 Python Selenium 中加载