【问题标题】:Adding a script in a C++ application在 C++ 应用程序中添加脚本
【发布时间】:2012-12-27 11:56:20
【问题描述】:

我正在做一个模拟股票市场的项目。人们买卖股票,我想将每一轮都称为脚本,以尝试针对市场的策略。

我想要的是 C++ 中的一个函数,它将整数向量作为参数发送到返回 3 个整数数组的 vba 或 python 脚本。

我已经搜索了解决方案,但我只能找到一种在 python 中执行脚本的方法,但我不知道如何从该脚本发送和获取参数。 我认为我的问题很常见,但我不知道去哪里寻找解决方案。

谢谢!

(我不是以英语为母语的人,如果我犯了语法错误,请见谅)

【问题讨论】:

  • @BartekBanachewicz IIRC 多年来没有这样称呼它 - 现在是 Boost.Python...
  • 从另一个进程取回向量将需要某种 IPC(进程间通信),这通常是特定于平台的,因此您需要指定哪个操作系统。但是,最好只用一种语言和程序编写全部内容。
  • @cdarke 它设计用于 Windows 7,但我可以使用传统数组而不是向量
  • 如果你没有绑定 python 或 vba,这些事情用 lua 或 chaiscript 相当容易。

标签: c++ python vba embedding


【解决方案1】:

在 Windows 上,您使用函数 CreateProcess() 来启动另一个程序。使用 python 解释器的完整路径作为第一个参数。以 python 脚本的路径开始第二个参数。

如果您可以将表示向量的字符串放入 32768 个字符中,则可以在 CreateProcess 的第二个参数中提供该向量。

一个更灵活的选项是创建一个带有重定向输入和输出的子进程,如here 所示。然后,您可以将向量写入 python 进程的标准输入,并从其标准输出中读取答案。

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点。

    我的做法是popen() 你的“脚本”[类似于“python myscript.py -arg1 -arg2”]。根据向量的大小,您可以将其存储在文件中,也可以将其作为参数的一部分传递[在 Windows 中,参数字符串的大小限制为 8KB]。

    然后输出将显示为 popen() 管道的结果。

    【讨论】:

      【解决方案3】:

      使用Boost.Python。它将帮助您将 python 嵌入到您的应用中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        • 2017-11-15
        • 2015-10-28
        • 1970-01-01
        • 2010-09-05
        相关资源
        最近更新 更多