[Solved] Qt compiled, but applications won't start
-
Hi,
I "successfully" compiled Qt 4.7.2 with msvc10 on a windows 7 64bit machine.
My call to configure looked like this
configure.exe -qt-sql-sqlite -exceptions -platform win32-msvc2010 -no-qt3support -no-webkit -no-phonon -no-script -no-scripttools -opensourceMy problem is, that the applications deployed to the 'bin' directory fail to start (linguist, designer, assistant). Launching one of them ends up in a dialog saying "XXX has stopped working".
The same happens for the example programs.
When I compile my own applications, they work when compiled in debug mode, switching to release leads to applications having the problems mentioned above.
I googled a lot, but didn't find anyone having similar problems.
[ As I don't use phonon (-no-phonon), I did not install the PSDK and DirectX SDK linked to at the general requirements page. ]
I'd appreciate any help - thanks in advance
-
Did you add the Qt bin dir to the PATH? If not, you should add it. It's needed so programs will find the Qt DLLs.
-
yes, the bin dir is in the path (I set the 'QTDIR' environment variable and put @%QTDIR%\bin@ into the path).
I started applications like the linguist, assistant, ... from right out of the bin directory. So that should not be a source of the problem (I think this also excludes that I have multiple conflicting installations of Qt on my machine) -
Are you sure your program is loading the correct version of Qt ?
I had the same issue with an old p4 version, bundling a fairly old qt version with standard name.
my programs in release were trying to load these dlls (e.g. qtCore.dll) whereas in debug, I had only mine (qtCore4d.dll)
My advice : try to put QTDIR/bin at begin of your path instead of end : if it works, you've won ! Try to pinpoint where in the path is the conflicting lib (looks like a binary incompatibility in the interface, like trying to load 32bits lib from your 64bits program)
Cheers
-
As far as I would know the current folder is used to look for dlls before any other folder in the path, so that should not be a problem when launching the applications in the bin directory of Qt using it as working directory.
I just copied the executables from the bin directory together with all the dlls and some programs I wrote myself to my laptop (also 64 bit windows 7) that has no Qt on it.
As expected I have exactly the same problems there.Sidenote: Using the same configure options, but msvc9 and win xp 32 bit in a virtual machine produces applications without problems, but I hate that it just doesn't work on my actual machine.
About the 32/64 bit incompatibility ... I ran configure and nmake using the "Visual Studio x64 Win64 Command Prompt (2010)" where cl/? says:
@
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>cl /?
Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
@ -
I had the same problem.
Compiled Qt several times using msvc-2010 x64 with various configure options and wound up with the same results each time:
Qt Tools didn't work, as did most of the examples. Same error messages as you had.After googling around for a bit I found out that it's a bug in the VC 2010 compiler. Compiling for x64 in release-mode with
optimization level 2 (which is the case with Qt), and the VC screws up badly.Long story short: Microsoft released a hotfix for the problem. Just download and install it. Recompile Qt and have fun.
"VC patch":http://archive.msdn.microsoft.com/KB2280741If you're interested in the whole story, "here":http://bugreports.qt.nokia.com/browse/QTBUG-11445 is the bug report.
I recommend using jom instead of nmake for multicore CPUs. It's basically a nmake clone but executes several jobs at once based on the number of cores. (as GNU make with the j-option)
It sped up my builds enormously.
"Description":http://labs.qt.nokia.com/2009/03/27/speeding-up-visual-c-qt-builds/
"Newest version":ftp://ftp.qt.nokia.com/jom/Hope this helps.
-
Thank you so much, that perfectly solved my problem.