桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

VC++10を使ってVC++9でビルド

DATA.blog > Visual C++でサポートされるプラットフォーム
http://data.blogdns.net/2010/09/platforms-supported-by-msvc/

ちょっと前に上記の情報をみてそうなんだーと思っていたのですが、

Visual Studio 2010 では、ツールセットの複数のバージョンを対象にビルドできるようにすることで、この問題が解決されます。たとえば、Visual Studio 2010 で作業しながら、Visual C++ 9.0 のコンパイラとライブラリを対象にすることもできます。

って事で、VisualC++ 2010でWindows 2000で動作するバイナリが作成できるのかやってみる。

MFCアプリケーション(v9.0)を作成して、Windows 2000 Service Pack 4上で起動してみました。

GDIPlus.dllがないって怒られました。DependencyWalkerでチェックした所、足りないのはGDIPlus.dllだけなのでうまい事やれば何とかなりそうですね。IE6.0SP1を入れればGDIPlus.dllもインストールされるみたいですね。そう言えばWindows 2000からWindowsUpdateが出来ませんでした。IE5.5だったから?
面倒なので載せていませんが、「_MSC_VER」「_MFC_VER」といったマクロの値は、ちゃんとそれぞれのバージョンのVisualC++を使った時の値になっていました。
因みに、VisualC++ 10.0でコンパイルする場合にランタイムを静的リンクした場合は、Windows 2000では起動できません。動的リンクにした場合はランタイムをインストールすればOK。

後はこの辺の情報も。