VC++2013 の MFC プロジェクトが単純アプリもコンパイルできない件
1>c:\program files (x86)\windows kits\8.1\include\um\sysinfoapi.h(126): error C4996: 'LPMEMORYSTATUSEX': が古い形式として宣言されました。 1> c:\program files (x86)\windows kits\8.1\include\um\sysinfoapi.h(120) : 'LPMEMORYSTATUSEX' の宣言を確認してください。 |
typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad; DWORDLONG ullTotalPhys; DWORDLONG ullAvailPhys; DWORDLONG ullTotalPageFile; DWORDLONG ullAvailPageFile; DWORDLONG ullTotalVirtual; DWORDLONG ullAvailVirtual; DWORDLONG ullAvailExtendedVirtual; } MEMORYSTATUSEX, *LPMEMORYSTATUSEX; WINBASEAPI |
うーん、訳が分からない。
別におかしくないじゃないか!
WINBASEAPI BOOL WINAPI GlobalMemoryStatusEx( _Out_ void *lpBuffer ); |
こうしてごまかしたら通った…。
次、共有DLLで MFCプロジェクトを作った後、
スタティックに切り替えます。
1> stdafx.cpp 1>c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afxver_.h(77): fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds |
なんで、 _AFXDLLが関係あるんだ…?
と思ったら、なぜか継承してたでござる…。
プリプロセッサの無視に _AFXDLLを放り込んだら通ったでござる…。
|・ω・) 。o ( もう、バージョン上げなくていいから、ちゃんとデバッグしてよ! )
_AFXDLLの件は、プロジェクトのプロパティの「構成プロパティ」の「全般」にある「MFCの使用」を「共有DLLでMFCを使う」から「スタティックライブラリでMFCを使用する」に変更したら良いのではないかと思います。これは、Visual Studio 2013に限らずずっと昔からこうなっています(少なくとも2005でもそうでした)。