msvcr80.dllはどこから

湍が Visual C++ 2005 ランタイムとVisual C++ 2008 ランタイムの両方に依存している状態を何とかしたいということで作業してました。

  • 改めてVC++2005ランタイムからの離脱作業してる。VC++2008EEで空のCLRライブラリ作ってC#側から参照してもmsvcr80.dllを読み込んでる理由を切実に知りたい -- posted at 03:03:48
  • VC++2008 Redistの拡張子をcabにして覗いた所ではmsvcr80.dllは含まれていない。「プログラムと機能」にもVC++2005ランタイムの項目はない。一体いつ入ったの… -- posted at 03:24:04
  • 新規作成したC#プロジェクトのexeも起動するとmsvcr80.dllを使っててわらた。諸悪の根源たるmsvcr80.dllをリネームするためセーフモードの再起動を試みるがそれは翌昼にして寝る -- posted at 03:36:56

で起きてからセーフモードで起動してみたんですが、管理者権限でもアクセスが拒否され断念。

  • VC++2005ランタイムを入れた覚えのないWin2003とXPの環境でもmsvcr80.dllがロードされている。もしかして.NET Frameworkと同時に入るのか? だから別途インストールの必要はない? -- posted at 14:01:00
  • ということで調べたらどうやら.NET Framework 2.0 SP2にはmsvcr80.dllが含まれていた模様。バージョンでややこしいことにならなければ、VC++2005ランタイムは必要なかったことになる -- posted at 14:03:42

ちなみに「.NET Framework 2.0 SP2にはmsvcr80.dllが含まれていた」というのは、x86 32bit版のランタイム(NetFx20SP2_x86.exe)をDLし、これをNetFx20SP2_x86.cabに改名して展開、さらにその中のcrt.mspをcrt.cabに改名して展開すると nosxs_msvcr80.dll.98CB24AD_52FB_DB5F_FF1F_C8B3B9A1E18E という名前のファイルが見つかることによって確認しました。
これも nosxs_msvcr80.dll に改名してプロパティを見ると、バージョンは8.0.50727.3053と書いてあります。

んー、でもこの結論って1年前にも出したような気がしないでもない(
確かデフォルトでインストールされるVC++ランタイムはバージョンが古かったような、そうでなかったような。

こちらの作業に飽きたので、また今度学科の人にでも協力してもらって .NET Framework 2.0 SP2 + DirectX 9.0c + d3dx9_39.dll だけで起動できるかを試してみようかと思います。