Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MS Visual Studio 2012 Express for Windows桌面-针对Windows XP_C++_Visual Studio 2012_Windows Xp_Visual Studio Express - Fatal编程技术网

C++ MS Visual Studio 2012 Express for Windows桌面-针对Windows XP

C++ MS Visual Studio 2012 Express for Windows桌面-针对Windows XP,c++,visual-studio-2012,windows-xp,visual-studio-express,C++,Visual Studio 2012,Windows Xp,Visual Studio Express,我最近已从Visual Studio Express 2010升级到适用于Windows桌面的Visual Studio 2012 Express。我知道以前针对Windows XP的兼容性不足,但我认为这可以通过更新1(我已安装)解决 但是,我仍然难以用2012个Express编译的C++应用程序来确定Win XP。我已经将平台工具集设置为“VisualStudio2012-WindowsXP(v110_XP)”,但这没有什么区别。当我尝试在我的Windows XP系统上运行编译后的应用程序(

我最近已从Visual Studio Express 2010升级到适用于Windows桌面的Visual Studio 2012 Express。我知道以前针对Windows XP的兼容性不足,但我认为这可以通过更新1(我已安装)解决

但是,我仍然难以用2012个Express编译的C++应用程序来确定Win XP。我已经将平台工具集设置为“VisualStudio2012-WindowsXP(v110_XP)”,但这没有什么区别。当我尝试在我的Windows XP系统上运行编译后的应用程序(我通过VirtualBox运行Windows XP)时,我得到一个错误,即我的应用程序“不是有效的Win32应用程序”

我还尝试将CLR支持设置为“无公共语言运行时支持”,并将运行时库设置为“多线程(/MT)”

即使使用了下面的代码,一个非常基本的空白C++项目,我也不能使它在XP:< /P>上运行
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#define NTDDI_VERSION 0x0501

#include <iostream>

int main()
{
    std::cout << "TEST" << std::endl;

    std::cout << std::endl << std::endl << "Press ENTER to close this window.";
    std::cin.get();
    return 0;
}
#定义_WIN32_WINNT 0x0501
#定义WINVER 0x0501
#定义NTDDI_版本0x0501
#包括
int main()
{

std::cout该消息表示您的生成未生成32位应用程序——例如,如果它是版本相关的API,您将看到另一个错误,表明找不到符号。由于您已指示在configuration manager中使用正确的目标平台,请检查您的属性资源管理器,以确定是否使用了正确的目标平台确保没有冲突的参数或默认值。如果您看到带有选项/MACHINE:X64的链接,则您发现了问题

如果这不起作用,我想您可以尝试运行Sysinternals process explorer,查看实际启动的cl/链接和参数。希望这能有所帮助。

检查项目的“配置属性->链接器->系统->子系统”属性。
如果为空,则用
(/SUBSYSTEM:CONSOLE)
(/SUBSYSTEM:WINDOWS)

填充此选项:

配置属性->链接器->系统->子系统= /子系统:WINDOWS

配置属性->常规->平台工具集-> 子系统Visual Studio 2012-Windows XP(v110\u XP)


使用Visual Studio 2012 Express Update 3。

使用GNU GCC工具链bro,该工具链使用mingw重新发布。MSV实际上只是最小化依赖项,但其中一些仍然保留在exe中。仅在GCC中编译支持完全静态链接,exe大小小,兼容性稳定。

在Build->Configuration Manager中检查目标平台。您当然可以在XP上运行使用VC 10 toolchain编译的程序。这与使用VS 2010编译基本相同,但您没有在问题中说明您需要VC 11 toolchain。@shf301-目标平台是Win32。@VioletGiraffe-所说的“toolchain”是指“toolset”吗我使用的是C++ 11,所以我假设我需要使用VC 11来编译。我不明白为什么把工具集设置为V1xXP并不能起作用。即使启动一个新的项目,使用默认的V1xXP设置也不起作用。@柯林:是的,我的坏,它是工具集。你可能需要或者不需要V110,这取决于C++的确切位置。11您需要。尚未在XP上尝试v110,因此无法帮助。但错误与缺少VC++redist包时相同。