У меня есть простое приложение:
#include <QCoreApplication>
#include <QList>
#include <QVector>
#include <string>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<QVector<int>*> lst;
lst.append(new QVector<int>);
char str[] = "almost every programmer should know memset!";
memset (str,'-',6);
std::cout << str;
return a.exec();
}
Это приложение использует оба CRT
и QtCore. Мне нужно заставить приложение использовать msvcr90
версии, например, 9.0.30729.4940.
Что я сделал: поместил необходимые dll в папку apps, создал config и manifest для qt dll и app. Вот они:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--This Id value indicates the application supports Windows Vista functionality -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--This Id value indicates the application supports Windows 7 functionality-->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--This Id value indicates the application supports Windows 8 functionality-->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--This Id value indicates the application supports Windows 8.1 functionality-->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
</application>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4940" processorArchitecture="amd64"publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="9.0.30729.6161" newVersion="9.0.30729.4940"/>
</dependentAssembly>
</assemblyBinding>
</windows>
</configuration>
И все же приложение загружается с 9.0.30729.6161
версия msvcr90.dll
, Я что-то пропустил?
Задача ещё не решена.