[Qt-interest] DLL issues with latest 4.5 SDK

Denton Vis vistapro7 at hotmail.com
Tue Mar 10 00:01:05 CET 2009


Firstly, the Qt SDK does come with the debug dlls. Mine are in 
C:\Qt\2009.01\qt\bin
and Qt Creator knows where to find them.
The dependency on msvcr90.dll suggests something to do with  Visual Studio 
(2008 maybe?).
Did you download the commercial version of Qt or the open source version 
which is built with and uses MinGW?


"Nathan Carter" <nathancarter5 at gmail.com> wrote in message 
news:10A4C380-D588-46F9-996C-E7FF89F92677 at gmail.com...
>
> Dear list,
>
> I have been developing an app on Mac and Linux, and it's time for a 
> release, so I downloaded the latest Qt 4.5 SDK for Windows to build  the 
> Win version.  I've built software recently and successfully with 
> Qt4.4+MinGW on Windows, so I didn't expect the problems I found.  But 
> this is my first time with Qt 4.5, so perhaps those are the  differences 
> I'm experiencing.  Here's what I did and what happened,  including my 
> several questions.
>
> I started doing a debug build so that I could test before I release.   The 
> resulting .EXE therefore expects QtCored4.dll, QtGuid4.dll, etc.  (note 
> the d's).  But the SDK doesn't come with those; it only has the 
> QtCore4.dll, QtGui4.dll, etc. (note the lack of d's).
>
> Question #1: Must I download the sources and build in debug mode to  get 
> the debug DLLs, or is there an easier way to get them?  (Google, 
> surprisingly, doesn't seem to have the answer for this one yet.)
>
> So anyway, I moved on to release mode, which is what I wanted to do 
> eventually anyway.  The resulting .EXE therefore expects the DLLs  without 
> the d's.  But when I toss the .exe and all the necessary DLLs 
> (mingwm10.dll, QtCore4.dll, QtGui4.dll, QtWebkit4.dll, QtScript4.dll, 
> QtNetwork4.dll) into the same directory and double-click the .exe, I  get 
> this error:
>
> The procedure entry point _Z17qt_message_output9QtMsgTypePKc could  not be 
> located in the dynamic link library QtCore4.dll
>
> Google results suggest that my DLLs are too old or too new, and I  should 
> get the right version.  But of course the DLL came from the Qt \bin 
> directory of the recently-installed SDK, and the binary of my  application 
> was just built with that very SDK.
>
> Question #2: So what's up with that?
>
> Lastly, using dependency walker, I can tell that my EXE is also  depending 
> on the following files (which are new to me--old builds of  similar 
> software on Qt4.4 did not need them) and dependency walker  says it can't 
> find these files:
> MSVCR90.DLL
> MSJAVA.DLL
> This suggests that even if I fix the Qt*.DLL issues, these new issues 
> will haunt me.  The MSVCR90.DLL is an indirect dependency of my 
> application, like this (--> means "depends on"):
>
> my.EXE --> QtCore4.dll --> MSVCP90.DLL --> MSVCR90.DLL
>
> And yet, QtCore4.dll also depends *directly* on MSVCR90.DLL, and 
> dependency walker can find *that* file (the direct dependency) without  a 
> problem (!).
>
> Question #3: Do .EXEs have references to DLLs by path name and not  just 
> filename?  If not, what explanation is there for two different 
> MSVCR90.DLLs, one findable and the other missing?  And if they are 
> referenced by path, when did that change, and does it flummox my hopes  of 
> just dumping all the DLLs in the same directory as the executable  with my 
> installer one day?
>
> The dependency chain for MSJAVA.DLL is enormous (WS2_32.DLL --> 
> USER32.DLL --> WINSTA.DLL --> NETAPI32.DLL --> DNSAPI.DLL --> 
> IPHLPAPI.DLL --> MPRAPI.DLL --> SETUPAPI.DLL --> SHELL32.DLL --> 
> SHDOCVW.DLL --> MSHTML.DLL --> IMGUTIL.DLL --> MSJAVA.DLL) but my 
> question is:
>
> Question #4: Any clue why that DLL is missing, or why it's even  needed? 
> (I do nothing with Java in my app.)  Also, I think I've used  WS2_32 
> before without needing MSJAVA.DLL, so did something recently  change?
>
> Phew!  Thank you to anyone who can shed any light on this headache!
>
> Nathan 




More information about the Qt-interest-old mailing list