ふと、コンパイラ・リンカ・インクルードパスにVisual C++ 2005のものを指定しながら、2005のCRTにリンクさせたらどうなるだろうと思い、試してみました。

環境変数LIBにVisual C++ 2005のLIBフォルダを指定して、次のCプログラムをコンパイル・実行してみました。

#include <stdio.h>
 
int main(void)
{
	puts("hello, world");
	return 0;
}

すると、何事もなく実行ファイルが出来上がりました。実行させても全くエラーなくhello, worldを出力します、結構びっくり。

Dependency Walkerで見てみるとVC++ 2005のmsvcr80.dllを必要とするEXEになっています。しかし、dumpbinで見てみると、オプショナルヘッダのリンカバージョンはVC++ 2008で作られたことを示すように9.0となっています。不思議な感じです。

まあ、こんなに単純なプログラムだから問題なく動いただけで、もっと付属のC/C++ライブラリを使う大抵のプログラムは、おそらくこうも上手くいかないでしょうね。

スポンサード リンク

この記事のカテゴリ

  • ⇒ コンパイラ: Visual C++ 2008, CRT: Visual C++ 2005