我创建了一个简单的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;
}
答案 0 :(得分:3)
您正在以意想不到的方式使用QProcess的API。 您需要创建args的QStringList:
QStringList args;
args << fileName;
args << exeFileName;
...
compileProcess->start("g++", args);
答案 1 :(得分:0)
我似乎通过在编译文件时提供-static
选项来使其工作,生成的exe文件运行正常而无需任何外部.dll文件。但是,它仍然没有从QProcess运行。