QProcess : "Process failed to start : No such file or directory"
-
wrote on 28 Aug 2017, 12:52 last edited by Julie
Hello everyone,
I develop an application with Qt Creator 4.3.1 (based on Qt 5.9.1) (MVC 2015, 32 bit). I'm on windows 10 x64 and my application is in C++.
This is part of my main function :
void fenetreprincipale::on_boutton_ValiderParametres_clicked(){ argumentsROI = ajoutDesArguments(); if(ui->matrice->isChecked()){ argumentsROI.append("--return_matrix"); } else if(ui->check_seuil->isChecked()){ argumentsROI.append("--threshold="+seuil); } if(lancementDuProgrammeROI()){ /*To DO*/ } ]
now this is a function i use :
QStringList fenetreprincipale::ajoutDesArguments(){ arguments.clear(); arguments.append("--file="+nomDuFichierSelectionne); arguments.append("--dset="+nomDuJeuDeDonne); arguments.append("--CCD_variance="+variance); arguments.append("--CCD_gain="+gain); return arguments; } bool fenetreprincipale::lancementDuProgrammeROI(){ processusOK = true; processusROI.setProgram(nomDuProgrammeROI); processusROI.setArguments(argumentsROI); processusROI.start(); if(!processusROI.waitForStarted()){ processusOK = false; QMessageBox::warning(this, "Erreur", "Le processus roi n'a pas démarré.\n"+processusROI.errorString()); } else{ if(!processusROI.waitForFinished()){ processusOK = false; QMessageBox::warning(this, "Erreur", "Le processus roi ne c'est pas terminé.\n"+processusROI.errorString()); } } return processusOK; }
here is my class fenetrePrincipale.h :
#ifndef FENETREPRINCIPALE_H #define FENETREPRINCIPALE_H #include <QMainWindow> #include <QFileDialog> #include <QMessageBox> #include <QDir> #include <QProcess> namespace Ui { class fenetreprincipale; } class fenetreprincipale : public QMainWindow{ Q_OBJECT public: explicit fenetreprincipale(QWidget *parent = 0); ~fenetreprincipale(); private slots: void on_boutton_ParcourirFichier_clicked(); void on_boutton_ValiderParametres_clicked(); private: Ui::fenetreprincipale *ui; /*--on_boutton_ValiderParametres_clicked()--*/ QStringList argumentsROI; QStringList ajoutDesArguments(); bool lancementDuProgrammeROI(); /*--creationDUnDossierContenantLesResultat()--*/ QString nomDuFichier_clone; QString nomDuDossierDesResultats; QDir dossierDesResultats; /*--recuperationDesArguments()--*/ QString nomDuJeuDeDonne; QString variance; QString seuil; QString gain; /*--ajoutDesArguments()--*/ QStringList arguments; /*--lancementDuProgrammeROI()--*/ bool processusOK; QProcess processusROI; QString nomDuProgrammeROI = "roi.exe"; }; #endif // FENETREPRINCIPALE_H
I don't understand my error.
Furthermore there are tree week it works.
the only element changed is a deleted directory (with program roi.exe i use).
I download it again on github. But i'm sure i add *.dll on it and i don't remember there name.Please help me.
-
Hi,
Where is
roi.exe
located on your system ? -
Then I'd use the full path to it in your application rather than relying on that. The working directory may not be the same as the one your program is stored in.
You can use QApplication::applicationDirPath for that.
-
Then I'd use the full path to it in your application rather than relying on that. The working directory may not be the same as the one your program is stored in.
You can use QApplication::applicationDirPath for that.
-
wrote on 28 Aug 2017, 13:38 last edited by Julie
I add my next verification :
if(lancementDuProgrammeROI()){ if(processusROI.exitCode() == 0){ /*TO DO*/ } else if(processusROI.error() != 0){ QMessageBox::warning(this, "Erreur", "Le programme roi a planté.\n"+statutDeLApplication.number(processusROI.exitStatus())+" : "+processusROI.errorString()); } }
-
What kind of application is
roi.exe
? -
wrote on 28 Aug 2017, 13:59 last edited by
it's an application in C use library gsl, hdf5, (fits at the end).
I compile it (and it works with cygwin)If you realy want to see the project i use is here :
https://github.com/christophe-pouzat/ENP2017the compilation line on cygwin an terminal linux :
gcc -W -g -o code/roi code/roi.c -lgsl -lgslcblas -lhdf5 -lhdf5_hl -lm -std=gnu11
and the execution is :
./code/roi -f Data_POMC.hdf5 -d stack -g 0.14 -v 290 -m > out/rss_stat
I think it's a problem of dll missing in this directory but i don't find them.
-
You can use Dependency Walker to check what
roi.exe
needs to run -
You can use Dependency Walker to check what
roi.exe
needs to runwrote on 28 Aug 2017, 14:28 last edited by Julie@SGaist I have already used it but after download 45 *.dll "API...." (and i don't find all in https://fr.dll-files.com/) I'm desesperate.
I see they are some *dll in 32bits and other in 64bits it's that ?
How i resolved it ?Thanks again for your time :)
-
wrote on 28 Aug 2017, 14:53 last edited by
-
The only files of real interest are the
CYG**.dll
the others are systems dll that you shouldn't need to do anything special for. -
The only files of real interest are the
CYG**.dll
the others are systems dll that you shouldn't need to do anything special for.wrote on 28 Aug 2017, 15:01 last edited by@SGaist ok, thanks!
And use this dll in c:cygwin64.
Why is'nt good ?
(I put new pictur in my last post)I try to make same reserche with my c++ project and i see this (it's only a part of result):
my project is in x86.
Do i change all my dll in x86 ? -
The only files of real interest are the
CYG**.dll
the others are systems dll that you shouldn't need to do anything special for.wrote on 28 Aug 2017, 16:33 last edited bythanks @SGaist I resolved my problem <3
In case of i loos it again or an other developper whant it i add :
- cygblas-0.dll
- cyggcc_s-1.dll
- cyggcc_s-seh-1.dll
- cyggfortran-3.dll
- cyggsl-19.dll
- cyghdf5_hl-10.dll
- cyghdf5-10.dll
- cygquadmath-0.dll
- cygwin1.dll
- cygz.dll
3/14