XP SP3 仮想マシン上にコードが存在する C++ プロジェクトを継承しました (yay)。
何らかの理由で、afxwin.h が含まれていても (そして、適切な測定のために winbase.h を含めました)、アプリケーションをコンパイルすると、一連のエラーが発生します。根本的なものは次のとおりです。
error C2065: 'MEMORYSTATUSEX' : undeclared identifier
error C2065: 'GlobalMemoryStatusEx' : undeclared identifier
MSDN で構造定義を見つけたので、問題の一部が解決されました (これは winbase で定義されていますが、何らかの理由でうまくいきません)。
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
しかし、それでも GlobalMemoryStatusEx の問題が発生します。関数定義をヘッダーに入れようとしたところ、未解決の外部シンボル エラーが発生しました。
WINBASEAPI BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpBuffer);
error LNK2001: unresolved external symbol "__declspec(dllimport) int __stdcall GlobalMemoryStatusEx(struct _MEMORYSTATUSEX *)" (__imp_?GlobalMemoryStatusEx@@YGHPAU_MEMORYSTATUSEX@@@Z)
Kernel32.lib はコンパイラ コマンドに含まれているため、これが機能しない理由はわかりません。この機能は廃止されたのではないかと思いましたが、Windows 7 マシンの VS2013 で問題なく動作するようになったので、そうではありません。winbase が認識されていないことと関係があると思いますが、C++ を 15 年も使っていないので、どこから始めればよいかわかりません。
何か案は?
解決
多くの人がこのソリューションに興味を持っているとは思いませんが、それでもここにあります!
ようやくMicrosoft ダウンロード センターで"Windows Server 2003 SP1 SDK" を見つけました(SDK の完全なリストはWikipediaで入手できます)。次に、VS6.0 内の Tools->Options にディレクトリを追加し、それらをリストの一番上に移動する必要がありました。
そして、やっと見ることができましたPROGRAM.exe - 0 error(s)