特定の .exe のビルドに使用された Visual C++ のバージョンを確認する方法はありますか?
.exe が CRT との動的リンクを使用する場合は簡単です。Dependency Walker を使用して MSVCRxx.DLL バージョンを読み取ることができます。たとえば、MSVCR90.DLL への依存関係は、.exe が Visual C++ 2008、つまり VC9 でビルドされていることを意味します。 ; しかし、CRT との静的リンクの場合はどうでしょうか。
特定の .exe のビルドに使用された Visual C++ のバージョンを確認する方法はありますか?
.exe が CRT との動的リンクを使用する場合は簡単です。Dependency Walker を使用して MSVCRxx.DLL バージョンを読み取ることができます。たとえば、MSVCR90.DLL への依存関係は、.exe が Visual C++ 2008、つまり VC9 でビルドされていることを意味します。 ; しかし、CRT との静的リンクの場合はどうでしょうか。
MSDN で、Matt Pietrek による次の興味深い記事を見つけました。
Inside Windows: Win32 Portable Executable File Format の詳細
対象分野はIMAGE_OPTIONAL_HEADER32/64::MajorLinkerVersion
とMinorLinkerVersion
です。これらは、Visual C++ 版とほぼ同じです (たとえば、VC10 の場合は「10」と「0」)。
(これらは、Dependency Walker がユーザー インターフェイスのLinker Ver列に使用するフィールドだと思います。)
Depends.exe でリンカのバージョンを確認できますが、VisualC++ のバージョンとほぼ同じです。
Dependency Walker の下のビューで、列Linker Verを選択します。