我正试图将现有的C++ 32代码迁移到windows7上的64位代码与visual studio 2010.我以前从未做过64位编译。在互联网引用的帮助下,我做了64位编译的设置。像VS2010与64位编译器等,并进行其他配置更改。 在预处理器中,我删除了WIN32并添加了WIN64。我有一些其他预处理器,如OS_WIN_32和其他一些在我的代码中特定的处理器。 在WIN32正在使用的代码中,我添加了额外的条件。 WIN64这只是为了确保应用程序应该与win32以及win64一起编译。 当我试图编译我得到的编译错误说在64位上迁移32位应用程序的问题
致命错误C1189代码:应该定义
此错误是由本地代码来只有WIN32和WIN64标志之一:#ERROR我们检查是否定义了WIN32和WIN64。该代码如下所示。
#if defined WIN32 && defined WIN64
# error Only one of the WIN32 and WIN64 symbols should be defined
#endif
在VS2010中,如果宏未启用,宏中的代码会变灰。在我的代码中,上面的错误也是灰色的。但我仍然得到这个错误。
我添加WIN64的代码包括windows.h。以供参考。
#if defined WIN32 || defined WIN64
#include <windows.h>
#include <process.h>
#endif
所以我的问题是为什么我得到这个错误?我们不应该为64位编译添加windows.h。我试着通过评论这个包含,但我得到的代码中使用HANDLE其他错误。 如果我去WIN32的定义VS2010指向windef.h文件中的定义。此文件存在于Microsoft SDKs \ windows \ v7.0A \ include文件夹中,即不是我的本地代码。 为了保证这个定义在下面给出。
#ifndef WIN32
#define WIN32
#endif
所以我想知道为什么编译器会得到预处理器WIN32和WIN64。
在此先感谢您的帮助。
尝试一下 “上的64位C/C++应用开发经验” - http://www.viva64.com/en/l/和“使用_WIN64/WIN64宏” - http://www.viva64.com/en/k/0040/ – 2012-04-19 17:27:29