launching app outside of Creator?
I’ve been using Creator as an IDE for awhile now (on my Mac platform). I’ve always launched the app from within Creator.
I recently moved the project to a Windows system…builds and runs fine through Creator. But if I try to run it just by double-clicking on the .exe file in the file system, nothing seems to happen.
This is a UI-less app (just reads some input files, and generates some output files).
First, I got an error message, saying that it couldn’t find a particular .dll, so I added the path to MinGW to the environment variables, and got past that.
What needs to be done to make this work?
I need to pursue this a bit further. Let me provide a bit of information:
For this application, I’m using Qt strictly as an IDE. I’m not using any of the Qt libraries or anything, except for the copy of MinGW (or whatever it’s called). So, how am I going to run into licensing problems?
And, since I’m modifying my pathname to find the .dll file(s), what else do I need to do to get this to run by double-clicking?
Sorry if this question seems elementary, but it’s really important I get past this, and do it right.
If you start your application from QtCreator, the QtCreator set the path correct, to find the right lib (dll’s). If you want to deploy your application, then you have two different choices. First, put the libs (dll’s) and the application in the same folder. Second, build the Qt libs static and build your libs with them, so you can deploy your application alone just *.exe file. But when you use static Qt libs, you have to take care about the license . When you use the shared libs (dll’s), you can use your own license.
I hope this helps.
You will need to put all the shared libraries you need next to the application itself or into some directory in the PATH of the machine. There should not be any need to link Qt statically (also that makes things easier of course;-).
If you are not using Qt at all in your program, then try adding
to your .pro-file and qmake should no longer link against the Qt libraries.
There appear to be two shared libraries needed by my app:
I first tried moving them to the same directory as the .exe file, and then modified my path variable to reflect their original location (restarting Creator to get the changes to take effect). Now, when I double click on the .exe file, I no longer get an error message, but…nothing seems to happen.
I realize this isn’t really a deployment question anymore, but is there a way to find out what happened to these program launches?
GUI, what kind of output do you expect exactly?If you say it is a console only application, without a
Well, first of all, I expect the program to take about two minutes to run. That’s how long it takes when launched from Creator. I also do write some minimal output to cout, which shows up in the “Application Output” area of Creator.
What happens if you run the application from a command prompt?
After a few seconds, the prompt returns.
The input and output files to be used by the app appear untouched.
I wonder: I do use relative pathnames for my filenames in the app. Is it possible that when the app is launched from Creator, it “thinks” it’s in a different directory? (I know I’m reaching here, but it seems like this might stem from an inability to open files.)
Is there a way in Windows to temporarily re-route the cout to a file? I have error messages in the app when a file open fails.
Hi, Scylla –
I just tried dependencywalker. It does identify some files I wasn’t aware of, and that might warrant a closer look.
But, doesn’t Creator just use the system/user environment variables to construct its path? If not, what does Creator do differently that allows it to find these files?
It appears that all the needed files are in one of two directories:
and both of those directories are in my PATH variable.
You’re talking about variables other than path, right? There are no environment variables unique to the run environment (all are inherited from the build environment).
In the build environment, all but two variables are inherited from the system environment. Those two that aren’t are PATH and QTDIR. But everything listed in the build environment PATH variable is already in the system environment.
Again, can I re-route my cout somehow to make it visible to me? It would tell me if I’m not finding an application file.
Now I don’t know what’s your problem is ;-). What do you want to know?
I thougth you want to start you app without the development environment, isn’t it?
If this is wat you want, you have to put the Qt lib’s in the same folder as the *.exe. Furthermore you need in this directory “mingwm10.dll” as well as the “libgcc_s_dw2-1.dll”. Last two dll’s are needed because you are using the mingw32 compiler. If your app needs a plugin like sqlite or jpeg, you have to put the needed plugins in this folder too. But the plugins need a special format i.e. sqlite plugin: sqldrivers/qsqlite4.dll.
If you now have all dependecies resolved, you app should start. You should see with dependeny walker, that there is no “external” dependency like “c:\system32”.