How to compile a C++ application in Visual Studio 2010 so that it could work in Windows 2000?
Applications built with the help of the new version of the Visual C++ compiler included into the Visual Studio 2010 development environment cannot be executed anymore in operating systems of the Windows family lower than Windows XP SP2. This issue is caused by including API calls of the EncodePointer function into the runtime-library of Visual C++ - this function appears only in the second service pack for Windows XP.
To build an application that could work in Windows 2000 from the Visual Studio 2010 environment, you may use the new Visual C++ 2010 functionality - multi-targeting. This kind of build allows to compile applications from VS2010 using the compiler, linker and libraries from previous Visual C++ versions if they are present in the system. You can choose the target platform in the project settings (General/Platform Toolset). The paths to the tools and libraries needed for building the application on the target platform are defined in props-files situated in the folder %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\<Platforms>\PlatformToolsets. To learn more about this, visit the blog of Visual C++ developers.
Note also that using multi-targeting allows you not to bother with supporting several versions of project files when the program you are developing needs support in various Visual C++ versions.
- Discussion at stackoverflow.com. Issue using Visual Studio 2010 compiled C++ DLL in Windows 2000.
- Visual C++ Team Blog. C++ Native Multi-Targeting.