Ich versuche, vorhandene C++ 32-Code auf 64-Code auf Windows7 mit Visual Studio 2010 zu migrieren. Nie zuvor 64-Bit-Kompilierung zuvor. Mit Hilfe von Internet-Referenzen habe ich das Setup für 64-Bit-Compilation gemacht. wie VS2010 mit 64-Bit-Compiler etc und anderen Konfigurationsänderungen. Im Präprozessor habe ich WIN32 entfernt und WIN64 hinzugefügt. Ich habe einige andere Pre-Prozessoren wie OS_WIN_32 und einige andere, die in meinem Code spezifisch sind. In dem Code, wo immer WIN32 verwendet wurde, fügte ich zusätzliche Bedingung als || hinzu WIN64 dies ist nur um sicherzustellen, dass die Anwendung mit win32 sowie win64 kompiliert werden soll. Wenn ich versuche, den Code Ich erhalte die Kompilierungsfehler sagenProbleme bei der Migration 32-Bit-Anwendung auf 64-Bit
fatal error C1189 zu kompilieren: #error: Nur eine der WIN32 und WIN64 Symbole sollten
dieser Fehler definiert werden aus dem lokalen Code kommt wo wir überprüfen, ob WIN32 und WIN64 definiert sind. Dieser Code ist wie folgt.
in VS2010 Wenn Makros nicht aktiviert sind, wird der Code innerhalb des Makros ausgegraut. In meinem Code ist auch der obige Fehler ausgegraut. aber ich bekomme immer noch diesen Fehler.
Der Code, in dem ich WIN64 hinzufügte, schließt windows.h ein. als Referenz givine es unten.
#if defined WIN32 || defined WIN64
#include <windows.h>
#include <process.h>
#endif
Also meine Frage ist, warum ich diesen Fehler bekomme? sollten wir Windows.h für 64-Bit-Kompilierung nicht hinzufügen? Ich habe versucht, diese Aufnahme zu kommentieren, aber ich bekomme andere Fehler in Bezug auf HANDLE, die im Code verwendet werden. Wenn ich zur WIN32-Definition gehe, zeigt VS2010 auf eine Definition in der Datei windef.h. Diese Datei ist im Ordner Microsoft SDKs \ Windows \ v7.0A \ include enthalten, d. H. Nicht in meinem lokalen Code. für den Bezug ist diese Definition unten angegeben.
#ifndef WIN32
#define WIN32
#endif
Also ich möchte wissen, warum Compiler beide Pre-Prozessoren WIN32 und WIN64 erhält.
Vielen Dank im Voraus für Ihre Hilfe.
Try-Look "Lessons auf die Entwicklung von 64-Bit-C/C++ Anwendungen" - http://www.viva64.com/en/l/ und "Verwenden von _WIN64/WIN64-Makros" - http://www.viva64.com/en/k/0040/ –