我有Visual Studio 2012更新4和Windows SDK 7.1。
我选择" Visual Studio 2012 - Windows XP(v110_xp)" toolkit和include目录更改为使用$(WindowsSdkDir_71A)。
在编译期间没有给出错误(例如它成功找到winres.h),但是当我尝试在Windows XP SP3上运行exe时,它仍然是错误:" test.exe不是有效的Win32应用程序。 "
对于测试,它只是一个C ++ hello world。
#include <cstdio>
int main(void)
{
printf("Hello, World!\r\n");
return 0;
}
如何使用Visual Studio 2012编译XP?
我应该检查什么才能使其正常工作?
如何在命令行上测试编译? 我目前正在使用此命令行进行测试,但仍会出现无效的win32错误:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe" /EHsc /MT /I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include" /I"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include" main.cpp /link /LIBPATH:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib"
更新 如果我在命令行中使用这些指令,它可以工作: http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx
如果我将这些设置放入我的系统环境变量中,我也可以让msbuild和visual studio成功编译,但这并不理想。
答案 0 :(得分:4)
需要更改的设置是 项目属性 - &gt;配置属性 - &gt;链接器 - &gt;系统 - &gt;子系统
对于相应的项目类型,需要将其设置为CONSOLE或WINDOWS,但默认情况下不为“空项目”设置,即使在其他地方设置了控制台与GUI并且它似乎有效(例如WinMain是条目)点,控制台没有出现等)。最低要求版本也需要为5.01,但是通过link.exe上的命令行帮助来判断,除非设置了子系统,否则我认为这不会做任何事情。
要检查的事项: