February 7, 2012

mzimmers mzimmers
Ant Farmer
524 posts

launching app outside of Creator?

Page  
1

Hi –

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?

Thanks…

31 replies

February 8, 2012

Scylla Scylla
Lab Rat
238 posts

Set the environment variable (path) or put the neccesary dll/plugins beside the *.exe, see here [developer.qt.nokia.com]. You can find the dependencies with dependencywalker [dependencywalker.com] .

February 8, 2012

mzimmers mzimmers
Ant Farmer
524 posts

Thanks for the information. So, do I understand correctly, that in order to build a stand-alone application, I need to re-build Qt?

February 8, 2012

Scylla Scylla
Lab Rat
238 posts

Yes, you have to build the Qt libs static. But then take care about the license issue!

February 8, 2012

mzimmers mzimmers
Ant Farmer
524 posts

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.

Thanks.

February 8, 2012

Scylla Scylla
Lab Rat
238 posts

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.

February 8, 2012

mzimmers mzimmers
Ant Farmer
524 posts

OK, this may seem like a dumb question, but how do I determine whether my installation of Qt is built static or not?

February 8, 2012

Tobias Hunger Tobias Hunger
Mad Scientist
3130 posts

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

  1. CONFIG -= qt
  2. QT -= core gui

to your .pro-file and qmake should no longer link against the Qt libraries.

February 21, 2012

mzimmers mzimmers
Ant Farmer
524 posts

There appear to be two shared libraries needed by my app:

  • mingwm10.dll
  • libgcc_s_dw2-1.dll

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?

February 21, 2012

Scylla Scylla
Lab Rat
238 posts

Did you try the dependency walker, what I mentioned above? Without you don’t know your dependencies!

February 21, 2012

Andre Andre
Area 51 Engineer
6031 posts

If you say it is a console only application, without a GUI, what kind of output do you expect exactly? What happens if you run the application from a command prompt?

 Signature 

Looking for Qt developers to join our team @ i-Optics: https://qt-project.org/forums/viewthread/25393/

February 21, 2012

mzimmers mzimmers
Ant Farmer
524 posts

Andre wrote:
If you say it is a console only application, without a GUI, what kind of output do you expect exactly?

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.

February 21, 2012

mzimmers mzimmers
Ant Farmer
524 posts

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?

EDIT:

It appears that all the needed files are in one of two directories:

  • C:\windows\system32
  • c:\qtsdk\mingw\bin

and both of those directories are in my PATH variable.

February 21, 2012

Scylla Scylla
Lab Rat
238 posts

Take a look at the project—>Run Settings—>Run Environment, there you can see which variables are set from Qt Creator to run the app with correct path.

February 21, 2012

mzimmers mzimmers
Ant Farmer
524 posts

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.

February 21, 2012

Scylla Scylla
Lab Rat
238 posts

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”.

Page  
1

  ‹‹ [resolved] Qt 4.8, Windows 7 64bit box, Building for VS2005 32 bit      #include <GL/glu.h> was removed from QtOpenGL/qgl.h while upgrading from Qt 4.7.3 to 4.8 ››

You must log in to post a reply. Not a member yet? Register here!