【问题标题】:Transferring Data Between Python and C++ Without Writing To File Windows and Unix在 Python 和 C++ 之间传输数据而不写入文件 Windows 和 Unix
【发布时间】:2023-04-04 05:17:02
【问题描述】:

我有预先存在的 python 和 C++ 文件,其中 python 文件定义了许多点,而 C++ 代码使用其现有库执行我需要的计算。最终产品是 C++ 代码写出的文件。我正在寻找一种在 python 中获取 2000 个点的列表的方法,将其传递给一个函数,然后执行所有 C++ 代码并输出我需要的文件。

其他一些注释。这需要可以在 Linux 或 Windows 机器上运行,并且安装最少量的新插件会很好(但我会尽我所能)。而且这一切都将在同一台机器上运行。

请告诉我最好的选择是什么!

【问题讨论】:

  • google://"python ffi"
  • Python提供了C-API,也可以考虑使用boost::python进行接口。
  • 请求库、文档、示例、教程在 SO 中是题外话。

标签: python c++ linux windows unix


【解决方案1】:

这是可能的,但您必须慢慢来。需要一些步骤。

您可以使用 swig 制作一个共享库/dll,它将为 python 包装您的 c++ 函数。如果您为 linux 和 win32 编译它,它将在 linux / 和 windows 上运行。

另一种选择是在 c++ 中嵌入 python。

最后为windows打包整个东西,用cx_freeze制作一个windows exe,然后用innosetup制作一个安装包。

【讨论】:

    【解决方案2】:

    您可以使用 google 的 protobuf 在 python 和 C++ 之间定义消息:

    https://developers.google.com/protocol-buffers/

    按照 protobuf 约定定义一个 .proto 文件,然后将该 proto 文件转换为 python 包和 C++ 定义。

    在 python 和 C++ 应用程序之间添加一条消息,在发送消息时确保使用适当的 API 对其进行编码和接收解码。编译时包含头文件和包。

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 2017-02-25
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 2017-06-10
      相关资源
      最近更新 更多