我在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
,正如所料。
答案 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\")");
完成了这份工作!