PDA

View Full Version : deployment problem: msvc++ 2008 Express, Qt 4.4.3



vonCZ
10th November 2008, 11:09
I recently got a new laptop and upgraded to MSVC++ 2008 Express and Qt 4.4.3. I built Qt using this same MSVC++ 2008. I'm experiencing a deployment problem, however, that I didn't have with Qt 4.1.x and msvc++ 2005 Express... that I hope someone can help me with.

I'm doing the open source/shared libraries route. I've followed the instructions here:

http://doc.trolltech.com/4.2/deployment-windows.html#shared-libraries

with the "hellogl" program. My deployment directory contains:

hellogl.exe
hellogl.intermediate.manifest
Microsoft.VC90.CRT.manifest
msvcm90.dll
msvcp90.dll
msvcr90.dll
QtCore4.dll
QtGui4.dll
QtOpenGL4.dll

This is how I pretty much did stuff before, without problem. There are 2 differences between this deployment directory and my old ones:

the microsoft stuff is all "90" instead of "80" (as expected: express 2008 is also called msvc 9.0)

and

the executable manifest file is now named: "hellogl.intermediate.manifest" instead of "hellogl.exe.manifest". I'm not sure why this is the case, but this seems to be the way either Qt or msvc++ 2008 names them now.

Anyway, when I copy the deployment directory to another computer (without Qt/MSVC++ installed) and double-click "hellogl.exe", it get the following error message:

C:\hellogl\hellogl.exe This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.


When I open it in dependency walker on this deployment computer, an error message pops up:

Dependency Walker Errors were detected when processing c:\hellogl\hellogl.exe". See the log for details.

There are 4 errors:

"Error: The Side-by-Side configuration information for "c:\hellogl\hellogl.exe" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (140001)." (see "hellogl_on_deployed.png")

this same error is given for:

qtopengl4.dll
qtgui4.dll
qtcore4.dll

By the way, if I open *just* the qtcore4.dll in dependency walker, I get the same error message for just that DLL. However, if I open the qtcore4.dll that I built a 18 months ago (qt 4.1.1, i think) with msvc++ 2005, I don't get this error.

Any ideas? When i built Qt 4.4.3 last week, everything built ok. If I open qtcore4.dll in dependency walker on my development computer, I think it's ok (see "qtcore4_on_devel_computer.png"). There's a DWMAPI.DLL error, but I think that should not be a problem.

pastor
10th November 2008, 11:40
What OS (XP, Vista, etc) are you using on "development" and "another" machines?

kingslee
10th November 2008, 11:46
Did u check the manifest file ' Microsoft.VC90.CRT.manifest'
make sure all the 8's are 9 for the new version.

vonCZ
10th November 2008, 11:54
What OS (XP, Vista, etc) are you using on "development" and "another" machines?

my bad: winXP all around, 32-bit.

Though I built/tested my older (msvc++ 2005 Express) projects on XP, a couple folks ran them on Vista with no problem.

vonCZ
10th November 2008, 11:58
Did u check the manifest file ' Microsoft.VC90.CRT.manifest'
make sure all the 8's are 9 for the new version.

As far as I can tell, not a problem:

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" etc...
<file name="msvcr90.dll" hashalg="SHA1" etc...

kingslee
10th November 2008, 12:07
Because .. I too had the same problem some time back ..
But i had the wrong version of visual studio in the manifest, intermediate and embedded manifest file.

So do check the visual studio correct complete version number.

vonCZ
10th November 2008, 14:31
Because .. I too had the same problem some time back ..
But i had the wrong version of visual studio in the manifest, intermediate and embedded manifest file.

So do check the visual studio correct complete version number.

this checks out correct: when I do

Help | About Visual C++ Express Edition


the version # is the same as in the manifest, above. Any other ideas?

vonCZ
10th November 2008, 14:38
note: if I copy two different versions of the QtCore4.dll I built into a directory with just those 2 DLLs:

QtCore4.4.dll (msvc++ 2008)
QtCore4.1.dll (msvc++ 2005)

and run them through Dependency Walker, I get the following expected error message with both:

Error: at least one required implicit or forwarded dependency was not found.

BUT with the one built recently with 2008, I get the additional error message:

Error: The Side-by-Side configuration information for "c:\qtcoreTest\QTCORE4.4.dll" contains errors. This application has failed to start..."

Is there thus a problem with my Qt*.dll's???