How to compile a C++ application in Visual Studio 2010 so that it could work in Windows 2000?

Andrey Karpov
Articles: 565

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.


Use PVS-Studio to search for bugs in C, C++, C# and Java

We offer you to check your project code with PVS-Studio. Just one bug found in the project will show you the benefits of the static code analysis methodology better than a dozen of the articles.

goto PVS-Studio;

Andrey Karpov
Articles: 565

Bugs Found

Checked Projects
Collected Errors
14 526
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site. Learn More →