Frage

I created a simple Qt app to compile a C++ file using QProcess. Now when I try to run the exe file from the app using QProcess, it doesn't run. When I tried to open the file manually, I got an error saying "libwinpthread-1.dll is missing".

Here's how I compiled the file-

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

And, this is the code for running it -

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);

Basically, I want to compile and run a C++ file, provide it sample input file and store the standard output in a new file. What is wrong with this code? Or any other way of doing it? I am working on windows 7. Also, I cannot understand why does the compiled program need that dll file when compiled from the Qt app and runs fine when compiled manually.

Just in case, this is the file I am trying to compile

//file.cpp
#include <iostream>

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

Lösung 2

I seem to get it working by providing -static option while compiling the file, the exe file produced runs fine without demanding any external .dll file. But still, It doesn't run from QProcess.

Andere Tipps

You are using API of QProcess in unexpected way. You need to create QStringList of args:

QStringList args;
args << fileName;
args << exeFileName;
...
compileProcess->start("g++", args);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top