我正試圖將現有的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