Программы, собранные при помощи новой версии компилятора Visual C++, включённого в состав среды разработки Visual Studio 2010, не могут более исполняться в ОС семейства Windows ниже версии Windows XP SP2. Данная проблема вызвана включением в runtime-библиотеки Visual C++ обращений к API функции EncodePointer, которая появляется только во 2-ом пакете обновлений Windows XP.
Для сборки работоспособного в WIndows 2000 приложения из среды Visual Studio 2010 можно воспользоваться новой функциональностью Visual C++ 10 — многоцелевой сборкой (multi-targeting). Такой вид сборки позволяет компилировать приложения из VS2010 с использованием компилятора, компоновщика и библиотек из предыдущих версий Visual C++ при условии их наличия в системе. Выбрать целевую платформу можно в настройках проекта (General/Platform Toolset). Пути к необходимым для сборки на целевой платформе инструментам и библиотекам заданы в props-файлах, находящихся в каталоге %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\<Platforms>\PlatformToolsets. Более подробно данный вопрос освещён в блоге группы разработчиков Visual C++.
Следует также заметить, что использование многоцелевой сборки позволит избавиться от необходимости иметь несколько версий проектных файлов в случае, когда разрабатываемая программа должна поддерживаться в различных версиях Visual C++.
0