Visual C++のランタイムを入れる
「ちょっとMicrosoftさん、何で最初から入れておいてくれないの?」ってことで意味不明なエラーで戸惑わされる人もいるかもしれませんので、その解決策を紹介しておきます。Windows7では「Microsoft Visual C++ 2005」や「Microsoft Visual C++ 2008」のランタイムが入っていません。その場合にMicrosoft VC++で作成されたアプリケーションを実行しようとすると以下のように「このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。」というエラーメッセージが出ます。
このエラーメッセージではさっぱり原因がわからないですよね。これはMicrosoft Visual C++などの開発言語のランタイムがシステムに存在しない場合に表示されるエラーです。したがって、この問題を解決するためには各種ランタイムをダウンロードしてきてインストールする必要があります。Windows7の64bit版を使っている人はx86(32bitアプリ用)だけでなくx64(64bitアプリ用)もインストールしておいたほうがよいでしょう。以下にVisual C++のランタイムのダウンロードができるリンクを用意しておきます。
- Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
- Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x64)
- Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
- Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)
- Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)
- Microsoft Visual C++ 2010 再頒布可能パッケージ (x64)
例えば「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)」の場合は、ダウンロードしたファイルをダブルクリックして実行すると、最初に以下のような画面が表示されますので、はいを押しましょう。あとは自動的にインストール完了まで進みます。
ほかのランタイムもインストールに難しい知識は不要です。同意するにチェックが必要ならばチェックをつけて、次へとインストールを押していきましょう。
なお、ここではよく使われている「Microsoft Visual C++」のランタイムを例にあげていますが、別の開発環境で作成されたアプリケーションでは別のランタイムが必要となります。このエラーが出た該当アプリケーションのドキュメントをよく読んで、必要なランタイムが記載されていたらそれをインストールするようにしなければなりません。
よく使われるランタイムを一括インストールするアプリケーションがあれば楽なんでしょうけどね。もしかして探してみると存在するのかな?
ドライブのルートにmsdia80.dllがインストールされた場合
【注意】そもそもこの64bit版のmsdia80.dllは、「Microsoft Visual C++ 2005」で作成された64bit版のアプリケーションを使わないのであれば不要です。WindowsXPの64bit版が登場した頃に作られたような古い64bit版アプリケーションをインストールしないならば、Windows7環境にインストールしなくても大丈夫だと思います。よって必要となるまでインストールしないという選択もありです。
「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x64)」のインストーラーには不具合があるようで、環境によっては一番空き容量の大きいドライブのルートにmsdia80.dllがインストールされてしまうことがあります。うちはハードウェア構成を何もいじっていないのに5回目のクリーンインストールで、インストール先がD:¥msdia80.dllとなってしまいました。これは本来以下のフォルダにインストールされなければならないものです。
C:¥Program Files¥Common Files¥Microsoft Shared¥VC
この現象が起こってしまったら少々面倒です。Microsoftのサポートでは一度アンインストールしてからもう一度インストールするように記載されていましたが、何度かやり直してみたものの正しいフォルダにインストールされることはありませんでした。困ったことにレジストリに登録されているため、msdia80.dllファイルを本来インストールされるべきフォルダへ単純にコピーすれば済むというものでもありません。
さて、運悪くドライブのルートにインストールされてしまった場合には、まず正しいフォルダ(C:¥Program Files¥Common Files¥Microsoft Shared¥VC)へmsdia80.dllをコピーします。次にスタートメニューを開き、プログラムとファイルの検索にcmdと入力しましょう。プログラム欄にcmdが表示されるので、それを右クリックして管理者として実行を選んでください。ユーザーアカウント管理の問い合わせが表示されるので、はいを押して管理者権限でコマンドプロンプトを開きます。
管理者権限のコマンドプロンプトでは以下のように入力して実行し、レジストリの登録情報を更新してください。
regsvr32 "C:¥Program Files¥Common Files¥Microsoft Shared¥VC¥msdia80.dll"
以下のようなダイアログが表示されれば登録成功です。無事成功したら、念のためにWindowsを再起動してからドライブのルートに置かれたmsdia80.dllを削除してしまいましょう。Microsoftがインストーラーの不具合を直したファイルで配布するようにしてくれれば、このような面倒な手間をかけなくて済むんですけどね……。