从 Qt 执行 Julia 命令

Execute Julia command from Qt

我是 运行 Qt (5.2.1) 和 Julia (v0.3.11) Ubuntu 14.04 (x64)。在 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,符合预期。

我按照 this chapter of Julia documentation and, most notably, this very useful .

了解了如何将 Julia 嵌入 Qt

该解决方案与我最初的方法有很大不同,因此为了完整起见,让我描述一下。

首先,我修改了 .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\")");

完成任务!