Проводим миграцию на VS 2013 с 2008 и возникла следующая проблема. Как узнать с какой версией CRT происходит линковка приложения.
Проект компилируется с использованием дефайна _BIND_TO_CURRENT_VCLIBS_VERSION. Он еще актуален для новой студии?
Раньше контролировали через автогенерируемый манифест, что было очень удобно сразу было видно все ошибки линковки: могли использовать 2 разные версии или не та версия какая нужна — в манифесте явно это указывалось.
Да и просто для контроля полезно знать тот ли redist вы поставляете в дистрибутиве.
В новой студии из манифеста все это убрали. Как теперь поступать и как вообще правильно контролировать версии рантайма?
Project Properties->General->Platform toolset. Макрос этот явно ни к чему.
Вообще вам стоило бы сразу обновляться до VS2015, ибо там очередные изменения в составе рантайма и его распространении.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Здравствуйте, VTT, Вы писали:
VTT>Project Properties->General->Platform toolset. Макрос этот явно ни к чему. VTT>Вообще вам стоило бы сразу обновляться до VS2015, ибо там очередные изменения в составе рантайма и его распространении.
Так эта тычка выбирает SDK, а не райнтайм вроде как.
Вот например описание в манифесте (как было):
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
<assemblyIdentity type='win32' name='Microsoft.VC90.ATL' version='9.0.30729.6161' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
Указывается что будет использоваться рантайм версии 9.0.21022 и 9.0.30729.6161 (что является ошибкой). И если будет другой рантайм хоть и от 2008 студии ничего не запустится.
Сейчас описания этого нет. Получается теперь можно устанавливать рантайм любой версии? Майкрософт так-то их периодически обновляет.
Мне просто непонятен механизм выбора рантайма для приложений в 2013.