ふと、コンパイラ・リンカ・インクルードパスに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++ライブラリを使う大抵のプログラムは、おそらくこうも上手くいかないでしょうね。
スポンサード リンク |
この記事のカテゴリ
- VC++ ⇒ コンパイラ: Visual C++ 2008, CRT: Visual C++ 2005