[Qt-interest] Mismatched VC90 CRT versions in manifest file
David Ching
dc at remove-this.dcsoft.com
Thu Jan 28 16:37:19 CET 2010
"Dave Smith" <dave at thesmithfam.org> wrote in message
news:4B6125DD.5060801 at thesmithfam.org...
> I have built a Qt 4.6.1 application targeting Windows XP using the
> pre-built VS 2008 Qt DLLs. When I look at the generated manifest file
> (after setting CONFIG -= embed_manifest_exe), I notice this line:
>
> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT"
> version="9.0.21022.8" (notice the version!)
>
> However, my nmake.exe version appears thus:
>
> Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
>
> And likewise, cl.exe gives this version in its output:
>
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01
> for 80x86
>
> And when I use depends.exe on QtCore4.dll, it shows that it depends on
> version 9.0.30729.4148 (in the WinSxS folder).
>
> So my question: Why does the manifest file want 21022.8, but everything
> else seems to use 30729.01? And is this a problem?
>
> I ask because my exe won't start on a fresh Windows XP install (it gives
> the usual error about reinstalling the application).
>
> --Dave
You can ignore the version of nmake.exe and cl.exe, it is irrelevant.
You need SOME version of the redists installed on the XP machine, and those
need to match what your .exe and the Qt DLL's were built with.
9.0.21022.8 is VS2008 RTM
9.0.30729.4148 is ATL Security Update released July, 2009
You are building your .exe with RTM, but Qt was built with ATL Security
Update.
But since your .exe does not have a manifest, it should not require a
specific version at runtime.
I highly recommend you do use a manifest because this stamps your app as
being Vista compatible and avoiding things like registry and disk
virtualization.
But since it doesn't, only the version used by the Qt DLL's matter.
I believe it should work on XP as long as the ATL Security Update redists
are installed.
Easiest and cleanest remedy is to:
1) Build your app with a manifest (remove CONFIG -= embed_manifest_exe)
2) Update your Visual Studio 2008 to the ATL Security Update
(9.3.30729.4148)
3) Rebuild your .exe
4) Now both Qt DLL's and your .exe use 9.3.30729.4148
5) Either create an app-local deployment, an installer with merge modules
for 9.3.30729.4148, or vc_redist.exe of 9.3.30729.4148
-- David
More information about the Qt-interest-old
mailing list