У нас есть приложение на C ++, которое я недавно портировал из Linux / gcc для сборки в Windows с Visual Studio 2005. Приложение использует стороннюю библиотеку, которая предоставляет только библиотеки DLL, которые используют оптимизированную DLL CRT (т.е. они не предоставляют эквивалентов, которые ссылаются на DLL отладки CRT). С VS2005 это не казалось проблемой = отладочная сборка нашла оптимизированную CRT DLL в каталоге System32.
Теперь я пытаюсь собрать и запустить наше приложение с VS2008, но отладочная сборка не запускается, потому что не может найти оптимизированную DLL CRT (msvc690.dll). Библиотеки DLL VC9 CRT находятся в каталогах с именем стиля GUID - я считаю, что это параллельная сборка, и приложение должно найти ее с помощью манифеста приложения. Однако манифест, который создается и внедряется в приложение exe, указывает только отладочную сборку CRT:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
Я не специалист по Windows (по крайней мере, уже сейчас), так что для меня это все в новинку. Какое здесь правильное решение? Нужно ли указывать компилятору манифеста добавить оптимизированную библиотеку CRT в сборку? Если да, то как мне это сделать?