gpt4 book ai didi

python - 如何从 Python 接收/获取 C 结构

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:21 24 4
gpt4 key购买 nike

我有一个独立的 Python 模块,用于对一些原始数据进行分析。该模块运行良好。

现在我需要 C 源代码中 Python 模块生成的输出,它将对输出进行进一步处理。

这里是流程的粗略概念:

  1. C 源代码将调用 Python 模块。
  2. Python 模块将生成的结果填充到 C 结构中,并且然后以某种方式将其传递给 C 源代码。

那么从 C 源代码中的 Python 模块获取结果的最佳方法是什么?

我应该使用类似下面的内容来填充结果吗?

from ctypes import *
class result(Structure):
_fields_ = [("status", c_int), ...]

最佳答案

我认为您不会想要使用 ctypes 模块 — 该模块用于从 Python 代码访问 DLL 和共享对象,而不是相反。

您没有指定 C 程序将如何调用 Python 模块。会吗

  • 使用来自 C 的 popen 之类的东西调用 Python 脚本?如果是这样,那么您可以用 Python 将数据写入 stdout 并在 C 中适本地解释数据。您必须为此设计自己的小协议(protocol)。这可以是一个临时协议(protocol),或者您可以使用现有的格式,例如 JSON,您可以找到用于 C 和 Python 的库。

  • embed the Python VM in your C program?然后,您需要将 C 值转换为适当的 Py* 值,并将它们放入 PyTuple 中,您可以将其作为参数从 C 传递给 Python 函数。 Python 函数的输出将是 PyObject。 ,您必须解压缩(在 C 中)以获取数据。

在这两种情况下,您都需要自己打包和拆包。

关于python - 如何从 Python 接收/获取 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com