X40/T43のメンテをするとT43にインストされているVC++ 2008 Expressに目が行く。
これはエミュ作成で使っていたものだが、最近めっきりC/C++なんて使っていなかった。まだ覚えてるかな?と簡単なHello Worldを書いて別のマシンで動かそうとするとエラーとなる。はて?エラーの出しようもないコードなのに、、、。原因はいたって単純で2003以降msvcr.dllにはそれぞれ固有のバージョンが用意され、有無を言わさずそれがリンクされてしまう。そこで当然実行マシンに同じものがないと怒られるということらしい。昔はmsvcr.dllと単純だったが今ではmsvcr70.dll msvcr71.dll msvcr80.dll msvcr90.dll msvcr100.dllとバリエーションも豊富w
どこにでも入っているであろうmsvcr.dllを強引にリンクさせるにはプロジェクトを一旦VC6で新規作成し、2008でプロジェクトを読み込んで変換してしまえばmsvcr.dllをリンクしてくれる。2008でプロジェクトを新規作成すると自動的に作成されるmanifestにバージョン入りのmsvcrXX.dllが書き込まれてしまうが、変換したプロジェクトではそれがない。但しMFC/ATLを使っているとどうなるかは不明。
ま、安全かどうかはまったく保障ないけどw
2010/10/25 月曜日
msvcr.dllの謎
コメントはまだありません »
No comments yet.
RSS feed for comments on this post. TrackBack URL