无法使用QProcess运行简单的控制台程序

时间:2014-02-12 14:23:25

标签: c++ qt qprocess

我创建了一个简单的Qt应用程序来使用QProcess编译C ++文件。现在,当我尝试使用QProcess从应用程序运行exe文件时,它不会运行。当我尝试手动打开文件时,我收到错误消息" libwinpthread-1.dll缺失"。

这是我编译文件的方式 -

QFileInfo finfo(fileName);
exeFileName = QFileInfo( QDir(finfo.path()), finfo.baseName() + ".exe").filePath();
QStringList arguments;
arguments << fileName << "-o" << exeFileName;
process->start(QString("g++"), arguments);

而且,这是运行它的代码 -

QProcess *runProcess = new QProcess(this);
runProcess->setStandardInputFile(inputFilename);
runProcess->setStandardOutputFile(QFileInfo(exeFileName).path() + "/output.txt");
connect(runProcess, SIGNAL(finished(int)), this, SLOT(runComplete(int)));
runProcess->start(exeFileName);

基本上,我想编译并运行C ++文件,提供示例输入文件并将标准输出存储在新文件中。这段代码有什么问题?或者其他任何方式吗?我正在使用Windows 7.此外,我无法理解为什么编译后的程序在从Qt应用程序编译时需要该dll文件,并且在手动编译时运行正常。

以防万一,这是我正在尝试编译的文件

//file.cpp
#include <iostream>

int main() {
    std::string s;
    std::cin >> s;
    std::cout << s;
    return 0;
}

2 个答案:

答案 0 :(得分:3)

您正在以意想不到的方式使用QProcess的API。 您需要创建args的QStringList:

QStringList args;
args << fileName;
args << exeFileName;
...
compileProcess->start("g++", args);

答案 1 :(得分:0)

我似乎通过在编译文件时提供-static选项来使其工作,生成的exe文件运行正常而无需任何外部.dll文件。但是,它仍然没有从QProcess运行。