2012-11-24 35 views
4

我在VS2010中创建了一个新的C++项目。我将x64添加为新的解决方案平台。我试着将“复制设置”设置为“Win32”和“空”,但都没有工作。我选择x64作为平台时未定义_AMD64_。它不是吗?是否有另一个步骤我不知道编译64位?_AMD64_未在VS2010中定义

对于问题的预期:我在VS安装期间选择了VS2010 Ultimate,Windows 7 64bit,x64编译器。

+0

使用_WIN64/WIN64宏 - http://www.viva64.com/en/k/0040/ – 2012-11-25 07:55:59

回答

5

你已经完成了所有步骤。 _AMD64_符号是而不是默认由Visual Studio预定义。如果你想使用它,你需要自己定义它:

#if defined _M_X64 || defined _M_AMD64 
    #define _AMD64_ 
#endif 

但是你并没有弥补它的存在。除了其他一些外,Windows DDK还提供了定义此符号的makefile。请登录makefile.def。的可能性是:

  • _X86_
    不同地称作X86,I386,和IA-32
    (这是相同的VS的预定_M_IX86

  • _AMD64_
    不同地称作AMD64, x64,x86-64,IA-32e和Intel 64
    (这与VS的预定义的_M_X64_M_AMD64相同)

  • _IA64_
    英特尔安腾(IA-64)
    (这是一样的VS预定义的_M_IA64

  • …和一些其他的架构没有人的目标了

理想的情况下,你会配置你的编译系统来预定义一组已知的宏,然后你将在你自己的代码中使用它。如果你没有构建系统,至少在预编译头文件中设置一些东西。那样的话,你并不依赖于依赖于实现的符号,而且切换编译器不是一个巨大的烦恼 - 例如,由GCC预定义的目标体系结构符号与MSVC非常不同。