【问题标题】:Execute Julia command from Qt从 Qt 执行 Julia 命令
【发布时间】:2015-08-06 21:16:16
【问题描述】:

我在 Ubuntu 14.04 (x64) 上运行 Qt (5.2.1) 和 Julia (v0.3.11)。在我可以使用的 Qt 程序中:

QProcess process;
process.start("echo 'Hello'");

并在控制台中打印出漂亮的Hello。但是当我尝试执行一个简单的 Julia 命令时,出现了问题:

QProcess process;
process.start("julia -e 'println(STDOUT, \"Hello\")'");

if (!process.waitForFinished())
  return;

cout << "Status: " << process.exitStatus() << endl;

输出只是Status: 0

为什么标准输出中没有打印任何内容?

注意:Julia 已经正确安装在我的系统上,shell 中julia -e 'println(STDOUT, "Hello")' 的输出如预期的那样是Hello

【问题讨论】:

  • 还要检查退出代码和 stderr/stdout 输出。我还建议使用 start(QStringList) 重载以避免引用问题
  • 你可以试试 process.start("julia", QStringList()
  • 你可以尝试使用execute()而不是start()吗?
  • 感谢您的 cmets。不幸的是,这些建议都没有奏效。

标签: qt julia


【解决方案1】:

我通过遵循 Julia 文档的 this chapter 了解了如何将 Julia 嵌入 Qt,最值得注意的是,这非常有用 thread

解决方案与我最初的方法完全不同,所以为了完整起见,让我描述一下。

首先,我修改了.pro 文件以包含:

LIBS += -L/usr/lib/x86_64-linux-gnu/julia/ -ljulia
INCLUDEPATH += /usr/include/julia/

然后,我修改main.cpp来初始化Julia:

...
#include "julia.h"
...

int main(int argc, char *argv[]) {

    // Initialize Julia
    jl_init_with_image((char*)"/usr/lib/x86_64-linux-gnu/julia", (char*)"sys.ji");
    JL_SET_STACK_BASE;

    QApplication a(argc, argv);
    ...

最后,在槽函数中执行以下命令:

jl_eval_string((char*)"println(\"Hello\")");

完成了任务!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2011-05-05
    • 2012-07-15
    • 2017-07-04
    • 2021-10-23
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多