从Qt执行Julia命令

时间:2015-08-04 17:14:59

标签: qt julia

我在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,正如所料。

1 个答案:

答案 0 :(得分:0)

我想出了如何通过跟踪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\")");

完成了这份工作!