【问题标题】:REDHAWK Python component calls legacy C-codeREDHAWK Python 组件调用旧版 C 代码
【发布时间】:2017-05-11 19:23:19
【问题描述】:

是否有从 Python 组件调用 C 代码的参考方法?我正在向 REDHAWK 移植一个调用 C 代码程序的 csh 脚本(带有“主”入口点和参数列表)。我更喜欢将 csh 脚本实现为 Python 组件,我从中调用 C 代码程序。

几个笔记:

  1. 我熟悉在 GNU Radio 的 SWIG 中执行此操作。
  2. 我承认将整个系统重新架构成连接的 SDR 组件是一个更大的问题,但基本的 C-from-Python 问题仍然存在。

【问题讨论】:

    标签: redhawksdr


    【解决方案1】:

    这是一个有趣的问题。您是否有权访问传统“主”应用程序的源代码?您关于 SWIG 的声明建议您这样做。如果这样做,最好的方法可能是使用REDHAWK 手册的Section 4.9 中讨论的共享库模式。 SWIG 或共享库方法的问题在于,它们需要重构您的遗留 C 应用程序才能有效地成为共享库。如果遗留只是某种形式的批处理处理器,它接收命令和数据并推出结果,那么您最好使用 fork/exec 范例。我在这里做了很大的假设,但是如果您的旧版应用程序将其输出放在标准输出上,您可以将其标准输出附加到您在组件外壳中读取的管道。

    REDHAWK GPP 完成了我上面提到的组件应用程序,您可以看到它是如何完成的here

    我在回答这个问题时做了很多假设。如果您提供有关您的约束的更多详细信息,我也许可以完善答案。

    其他想法:如果您决定只想要一个快速的结果,StackOverflow 上有一篇很棒的帖子,问题是“python-c-wrapper-for-reading-variable-argument-lengths”这可能会让你很快在 REDHAWK 生成的 python 组件中运行起来。我只是不确定您将如何从旧版应用程序中获得任何结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多