无法使用QProcess运行简单控制台程序 我创建了一个简单的QT应用程序,用QPalk编译C++文件。现在,当我尝试使用QProcess从应用程序运行exe文件时,它不会运行。当我试图手动打开该文件时,出现了一个错误,显示“libwinpthread-1.dll丢失”

无法使用QProcess运行简单控制台程序 我创建了一个简单的QT应用程序,用QPalk编译C++文件。现在,当我尝试使用QProcess从应用程序运行exe文件时,它不会运行。当我试图手动打开该文件时,出现了一个错误,显示“libwinpthread-1.dll丢失”,c++,qt,qprocess,C++,Qt,Qprocess,下面是我如何编译该文件的- QFileInfo finfo(fileName); exeFileName = QFileInfo( QDir(finfo.path()), finfo.baseName() + ".exe").filePath(); QStringList arguments; arguments << fileName << "-o" << exeFileName; process->start(QString("g++"), argu

下面是我如何编译该文件的-

QFileInfo finfo(fileName);
exeFileName = QFileInfo( QDir(finfo.path()), finfo.baseName() + ".exe").filePath();
QStringList arguments;
arguments << fileName << "-o" << exeFileName;
process->start(QString("g++"), arguments);
基本上,我想编译和运行C++文件,提供它的示例输入文件并将标准输出存储在一个新文件中。这个代码有什么问题?还是其他的方法?我在Windows7上工作。此外,我无法理解为什么编译的程序在从Qt应用程序编译时需要该dll文件,而在手动编译时运行良好

以防万一,这就是我要编译的文件

//file.cpp
#include <iostream>

int main() {
    std::string s;
    std::cin >> s;
    std::cout << s;
    return 0;
}
//file.cpp
#包括
int main(){
std::字符串s;
标准:cin>>s;

std::cout您正在以意外的方式使用QProcess的API。 您需要创建参数的QStringList:

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

args我似乎通过提供
-static
选项使其工作。在编译文件时,生成的exe文件运行良好,不需要任何外部.dll文件。但它仍然不能从QProcess运行。

我尝试过这样做,但由于文件路径中有空格,因此不起作用。这种方法实际上在处理参数中的空格方面更好-不需要引号,因此您可能对QProcess有其他特殊性,请尝试检查PATH环境变量-然后您可能有一些DLL不需要引号found@Shubham你绝对肯定是这样吗?因为它对我有用。@KubaOber是的。我的文件在一个文件夹中,名称中有一个空格。不是吗work@KubaOber看到这个了吗
QStringList args;
args << fileName;
args << exeFileName;
...
compileProcess->start("g++", args);