Я создал простое приложение Qt для компиляции файла C++ с помощью QProcess. Теперь, когда я пытаюсь запустить exe файл из приложения с помощью QProcess, он не запускается. Когда я попытался открыть файл вручную, я получил сообщение об ошибке “libwinpthread-1.dll отсутствует”.
Вот как я скомпилировал file-
QFileInfo finfo(fileName); exeFileName = QFileInfo( QDir(finfo.path()), finfo.baseName() + «.exe»).filePath(); QStringList arguments; arguments 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++, предоставить ему образец входного файла и сохранить стандартный вывод в новом файле. Что не так с этим кодом? Или любой другой способ сделать это? Я работаю над окнами 7. Кроме того, я не могу понять, зачем скомпилированной программе нужен этот DLL файл при компиляции из приложения Qt и отлично работает при компиляции вручную.
50 PyQt Framework Использование класса QProcess
На всякий случай, это файл, который я пытаюсь скомпилировать
//file.cpp #include int main() < std::string s; std::cin >> s; std::cout
Лучший ответ:
Кажется, я работаю, предоставляя -static при компиляции файла, созданный exe файл работает отлично, не требуя внешнего файла.dll. Но все же, он не запускается из QProcess.
Вы используете API QProcess неожиданным образом. Вам нужно создать QStringList из args:
QStringList args; args start(«g++», args);
Источник: techarks.ru
QProcess не запускается
По какой-то причине я не могу запустить процесс с помощью QProcess на Ubuntu, и я не понимаю, почему.
int main(int argc, char *argv[]) < //Run the process: QString procName = «./path/to/executable/Individual»; QProcess *proc = new QProcess(); proc->start(procName); if(!proc->waitForStarted()) < std::coutint exitCode = proc->exitCode(); std::cout
Это всегда печатает «Fail» на терминале. Если я ./path/to/executable/Individual в терминал, он работает нормально, поэтому путь кажется правильным. Может ли кто-нибудь сказать мне, почему программа не запустится? Я использую Qt версии 5.9.1 на Ubuntu.
DrDonut 09 март 2018, в 10:58
Поделиться
Проблема в текущем рабочем каталоге вашего приложения. Поскольку вы используете относительный путь, он не может найти ваш исполняемый файл. Попробуйте вместо этого использовать полный путь или запустите приложение из правильного местоположения.
vahancho 09 март 2018, в 09:37
Вы должны использовать QFileInfo :: exist (), чтобы убедиться, что Individual доступен из вашей программы.
Qt — Работа с процессами (QProcess)
Источник: overcoder.net
Не удается запустить простую консольную программу с помощью QProcess
Я создал простое приложение Qt для компиляции файла C++ с помощью QProcess. Теперь, когда я пытаюсь запустить exe файл из приложения с помощью QProcess, он не запускается. Когда я попытался открыть файл вручную, я получил сообщение об ошибке «libwinpthread-1.dll отсутствует». Вот как я скомпилировал file-
QFileInfo finfo(fileName);
exeFileName = QFileInfo( QDir(finfo.path()), finfo.baseName() + «.exe»).filePath();
QStringList arguments;
arguments 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++, предоставить ему образец входного файла и сохранить стандартный вывод в новом файле. Что не так с этим кодом? Или любой другой способ сделать это? Я работаю над окнами 7. Кроме того, я не могу понять, зачем скомпилированной программе нужен этот DLL файл при компиляции из приложения Qt и отлично работает при компиляции вручную. На всякий случай, это файл, который я пытаюсь скомпилировать
//file.cpp
#include
int main() std::string s;
std::cin >> s;
std::cout return 0;
>
спросил(а) 2021-01-22T15:00:11+03:00 2 года, 5 месяцев назад
Источник: progi.pro