スキップしてメイン コンテンツに移動

PCゲームやソフトが動かない時のVisual C++ランタイム確認と対処方法

Windows PCのゲームやソフトが動かないときに確認したいのがVisual C++ランタイムです。

「DLLが見つかりません」「Visual C++のランタイムを入れてください」といったメッセージが出るときは、必要なランタイムが入っていません。

Visual C++ランタイムがどういうものか、確認方法、ダウンロード方法などを整理してみます。


Visual C++ランタイムとは

Microsoftが提供するライブラリで、Windows上で Visual C++で開発されたアプリケーションを実行するために必要なコンポーネントです。

多くのアプリケーション(ゲーム、オフィスソフト、ユーティリティなど)はVisual C++を使用して開発されている場合が多いです。

アプリに必要なランタイムを組み込んでいない場合、ユーザー側でインストールする必要があります。


複数のランタイムをどの順番で入れても問題ない

正式な再頒布パッケージでインストールする場合、複数のランタイムは適切に管理されます。順番を問わず、ランタイムを入れてもDLLのダウングレードや削除がされないようになっています。

ランタイムのx86とx64は使うアプリに合わせる

x86のパッケージは32bitアプリ向け、x64のパッケージは64bitアプリ向けに必要なものです。32bitアプリを使う場合は64bit環境でもx86パッケージを入れます。


ランタイムのパッケージ

正式な再頒布可能パッケージ

Microsoft Visual C++ 2015-2022 Redistributable
Visual C++ 2015、2017、2019、2022のいずれかで開発されたアプリ向けのランタイムパッケージです。複数のランタイムが統合された1つのパッケージになっています。

Microsoft Visual C++ 2013 Redistributable
Microsoft Visual C++ 2012 Redistributable
Microsoft Visual C++ 2010 Redistributable
Microsoft Visual C++ 2008 Redistributable
Microsoft Visual C++ 2005 Redistributable
Visual C++ 2005から2013のいずれかで開発されたアプリ向けのランタイムパッケージです。ソフトウェアの要件に合うパッケージを入れます。

正式な再頒布パッケージが存在しないVisual C++バージョン

Microsoft Visual C++ .NET 2003
Microsoft Visual C++ .NET 2002
.NET Framework 1.1や.NET Framework 1.0のランタイムに含まれているようです。

Microsoft Visual C++ 6.0以前
ソフトウェアに必要なDLLがバンドルされていることが多いです。

Visual C++ランタイムに含まれているもの

Visual C++再配布可能ランタイムには、以下のようなコンポーネントが含まれています。DLLのファイル名のXXのところはバージョンによって変わります。

C ランタイムライブラリ(CRT, C Runtime Library)
msvcrtXX.dll など
C言語の標準ライブラリ(printf や malloc などの関数を提供)

C++ 標準ライブラリ(STL, Standard Template Library)
vcruntimeXX.dll など
C++ の std::vector や std::string などの標準ライブラリを提供

MFC(Microsoft Foundation Class)ライブラリ(MFC対応版のみ)
mfcXX.dll など
Windows GUI アプリケーション開発向けのライブラリ

ATL(Active Template Library)
atlXX.dll など
COM(Component Object Model)開発のためのテンプレートベースのライブラリ

その他の依存 DLL
msvcpXX.dll(C++ 標準ライブラリ用)
ucrtbase.dll(Universal C Runtime)など

DLLがバージョンごとに別名になっている

Visual C++のバージョンごとに独自のDLL(msvcpXX.dll, msvcpXX.dll など)があり、アプリケーションごとに適切なものがロードされる仕組みになっています。

VC++ 6.0  msvcrt.dll, msvcp60.dll
VC++ .NET 2002 (7.0)  msvcr70.dll, msvcp70.dll
VC++ .NET 2003 (7.1)  msvcr71.dll, msvcp71.dll
VC++ 2005 (8.0)  msvcr80.dll, msvcp80.dll
VC++ 2008 (9.0)  msvcr90.dll, msvcp90.dll
VC++ 2010 (10.0) msvcr100.dll, msvcp100.dll
VC++ 2012 (11.0) msvcr110.dll, msvcp110.dll
VC++ 2013 (12.0) msvcr120.dll, msvcp120.dll
VC++ 2015~2022 (14.x) vcruntime140.dll, msvcp140.dll など

msvcrt.dllはシステムコンポーネントとして管理

msvcrt.dllは元々Windows の標準 C ランタイムライブラリ として提供されており、Windows システム (C:\Windows\System32\やC:\Windows\SysWOW64) に配置されます。

Windows Updateによってのみ更新され、アプリケーションが直接上書きすることはない 仕組みになっています。


2005から2010ではサイドバイサイド(SxS)アセンブリによる管理

Visual C++ 2005から2010では「サイドバイサイド(Side-by-Side, SxS)」アセンブリという仕組みが導入されました。

  • C:\Windows\WinSxS\ にバージョンごとのランタイムがインストールされる
  • app.exe.manifest というマニフェストファイルで、どのバージョンの DLL を使用するか指定
  • 複数のバージョンのランタイムが共存可能

Windowsは特定のランタイムバージョンを特定のアプリで使用できるように、異なるバージョンをC:\Windows\WinSxSのフォルダに保存し、アプリが求めるバージョンを自動的に提供する仕組みを持っています。

たとえば、Microsoft Visual C++ 2008 Redistributableの中でも複数バージョンがあり、どのバージョンも同時にセットアップ可能です。あるアプリが 9.0.21022(2008年最初のバージョン)を必要とし、別のアプリが 9.0.30729(SP1のアップデート版)を必要とする場合、両方が共存します。


2015から2022は統合され、下位互換性を持つ

Visual C++ 2015 以降(2015, 2017, 2019, 2022)は同じランタイム(vcruntime140.dll, msvcp140.dll など)を使用し、互換性を持つようになりました。

新しいバージョンが出ると、古いバージョンと互換性を持ちつつ上書き更新されます。


インストール済みか確認する方法

  • Windowsのインストール済みアプリケーションの一覧で「Microsoft Visual C++ XXXX Redistributable」があるかどうか、x86とx64パッケージが別々なのでどれが入っているか見る
  • C:\Windows\System32やC:\Windows\SysWOW64、C:\Windows\WinSxS\にmsvcrXX.dllなどのファイルがあるか検索する


入っていない場合の対処方法

必要なランタイムをインストールします。

  • Visual C++ 2005以降のランタイムが必要な場合は、該当する再頒布パッケージを導入する
  • ランタイムはx64アプリ用とx86アプリ用があるため、入っていない方を導入する
  • ソフトウェアのパッケージにバンドルされたDLLがあれば、適切な場所にコピーする
  • ソフトウェアがリリースされたのが2000年前半なら、「Microsoft Visual C++ 2005 Redistributable」や初期の「.NET Framework」などを入れてみる
  • 「Vector」などのソフトライブラリサイトでユーザーが作成したDLLのパッケージが配布されているため、ダウンロードして導入する

ダウンロード方法

2005以降のものは以下のページからダウンロードできます。

サポートされている最新の Visual C++ 再頒布可能パッケージのダウンロード

2005より前のものは「Vector」などのソフトライブラリサイトで「ランタイム」「msvcr」「msvcp」などのキーワードで探してみてください。

Vector:ソフトライブラリ

このブログの人気の投稿

Win95/98時代のゲームを今のWindows10/11で遊ぶ・動かす方法

 昔のWindows95/Windows98時代のゲームを今でも遊びたいという人は多いと思います。自分もそうです。 でもWindows10やWindows11で動かそうとしてもそのままではうまく動かないときが多いので対処方法をまとめておきます。 対処方法の一覧 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする 対処方法2:古い環境でゲームをセットアップして内容をコピーする 対処方法3:DirectX 9.0cをインストールする 対処方法4:互換モードを利用する 対処方法5:DXWndでフルスクリーンゲームをウインドウ化する 対処方法6:DDrawCompatでグラフィックス関連の互換性を上げる 対処方法7:_inmm.dllでCD音源を再生できるようにする 対処方法8:64bit環境ならWOW64の仕組みをふまえて調整する 起動したゲームの例 ぷよぷよ、ぷよぷよ通、バーチャファイターPC、電脳戦機バーチャロン 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする Windows95/98時代のゲームのインストーラは今のWindowsでうまく動かなかったりします。 ゲームが入っているメディア(FD・CD)を見てみて、ゲームの実行プログラム(EXEプログラム)やゲームのファイルがそのまま見える状態ならコピーしてみましょう。 もしsetup.exeや内容がCABファイルで圧縮されているゲームはセットアップが必要でこの方法は使えません。 手順 1. ゲームが入っているメディア(FD・CD)をエクスプローラで開く 2. ゲームのプログラム(EXE)やDLLファイル、WAVやMIDファイル、TXTファイル、その他ファイルなどが沢山入っているフォルダがあるか確認する 3. 見つかったらCドライブにゲーム名のフォルダを作り、中身をコピーする 4. ゲームのプログラム(EXE)を実行してみて動くか試してみます 対処方法2: 古い環境でゲームをセットアップして内容をコピーする 対処方法1ができないゲームはWindows XPなどの少し前のパソコンがあれば、そこにセットアップしたものをコピーする方法があります。 ただしファイルのコピーだけでは動かず、セットアップでレジス...

DirectX 9.0c ランタイムのダウンロードとインストール方法

Windows10やWindows11でWindowsXPや95/98時代のゲームを遊ぶとき、その時代のDirectXランタイムであるDirectX 9.0cが必要な場合があります。 2025年現在もマイクロソフトから公式配布されています。ダウンロードして保管しておきましょう。 ダウンロード方法 1. 下のダウンロードページにアクセス。ページの言語が変わるだけでダウンロードできるファイルはどちらも変わりません。 日本語ダウンロードページ ダウンロードセンター DirectX End-User Runtimes (June 2010) 英語ダウンロードページ Download Center DirectX End-User Runtimes (June 2010) 直接リンク https://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe 2. ページにある「ダウンロード」をクリック。 3. directx_Jun2010_redist.exeがダウンロードされます。 現在ダウンロードできるファイル 2025/1/18現在のファイル内容です。 バージョン: 9.29.1974.1 公開日: 2021/2/20 ファイル名: directx_Jun2010_redist.exe ファイルサイズ: 95.6 MB (100,275,120 byte) インストール方法 1. セットアップファイルの展開先が必要なので、適当な場所に新規のフォルダを作成しておきます。 2. directx_Jun2010_redist.exeをダブルクリックして実行。 3. ライセンス確認が出たら「Yes」をクリック。 4. フォルダの選択が出たら「Browse」をクリックして、作成したフォルダを選択して「OK」をクリック。 5. 作成したフォルダに沢山のファイルが展開されるのを待ちます。 6. 完了したら、作成したフォルダの中にあるDXSETUP.exeをダブルクリックして実行。 7. 画面の指示に従ってインストール。

32bitゲームを64bit環境で動かすWindowsの仕組みWOW64

Windowsで動くゲームは昔のWindows95/98用ゲームから始まり、ちょっと前のWindowsまで大半のゲームは32bitコードのプログラムです。 今のWindowsを64bit環境で使っている人が多いと思いますが、そのままでは32bitコードのプログラムは動きません。Windows側で「WOW64」というエミュレーションがされます。 WOW64を理解しておくことで昔のゲームを今のパソコンで動かせる可能性が高まります。 WOW64とは Windows 32bit On Windows 64bitの略。64bitのWindowsで32bitコードのプログラムを動かすエミュレーションの仕組みです。 CPU自体だとx86の64bit化自体は32bitとの互換性が高い状態で拡張されています。加えてWindows側は32bitコードのプログラムの互換性を維持するためにWOW64の仕組みが動いて対応します。 64bit環境で32bitコードのプログラムは以下のような動き、制限があります。 32bitコードのプログラム向けに32bitで扱える仮想メモリ空間が割り当てられる 32bitコードのプログラムと64bitコードのプログラムは1つのプロセス内に混在できない DLLも32bitコードのプログラムは32bitコードのDLLを呼び出す必要がある。32bitコードのプログラムから64bitコードのDLLを呼び出せない Windowsのシステムフォルダやレジストリは32bitコード用に用意されたものにアクセスするようにリダイレクトする 32bitのゲームを64bit環境で動かすときのポイント 古いゲームのインストール先は標準のProgam Filesフォルダにしない 64bit環境では64bitコードのプログラムは C:¥Program Files に、32bitコードのプログラムは C:¥Program Files(x86) にインストールされます。Program Files(x86)やProgram FilesフォルダはWindowsの管理下になっています。 Win95/98向けのような古いゲームをこれらのフォルダにセットアップしようとしても、セットアップが途中で失敗したり、入ってもゲームが動かなかったりします。 古いゲームをセットアップするとき、手動でファイルをコピーし...