Visual Studio 2010.iでWindows7上で既存のC++ 32コードを64コードに移行しようとしています。インターネット参照の助けを借りて私は64ビットコンパイルのセットアップをしました。 64ビットコンパイラなどのVS2010やその他の設定変更などがあります。 プリプロセッサで私はWIN32を削除してWIN64を追加しました。私はOS_WIN_32のようないくつかの他のプリプロセッサと私のコードに固有のいくつかを持っています。 WIN32が使用されていたコードでは、||これは、アプリケーションがwin32とwin64でコンパイルされるようにするためです。 私は64ビットで32ビットアプリケーションを移行する際の問題
致命的なエラーC1189言ってコンパイルエラーを取得していたコードのコンパイルしようとしていた場合:#エラーを:WIN32とWIN64のシンボルの一つだけが、このエラーは、ローカルコードから来ている
を定義する必要があります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を追加するべきではありませんか?私はこのインクルードをコメントしてみましたが、コードで使用されている他のエラーが発生しています。 もし私がWIN32の定義に行けば、VS2010はwindef.hファイルの定義を指しています。このファイルはMicrosoft SDKs \ windows \ v7.0A \ includeフォルダにあります。ローカルコードではありません。その定義を以下に示すために を参照してください。
コンパイラがプリプロセッサWIN32とWIN64の両方を取得している理由を知りたいのですが。
ご協力いただきありがとうございます。
は、 "64ビットC/C++アプリケーションの開発の教訓" を見てみ - http://www.viva64.com/en/l/をし、 "_WIN64/WIN64マクロを使用する" - http://www.viva64.com/en/k/0040/ –