アプリを起動したときに、VCRUNTIME140.dllが見つからないという次のエラーが出たら、MicrosoftのVisual C++ v14再頒布可能パッケージを入れます。Windowsが64bitだからx64版、と手が伸びますが、アプリと同じビット数(x86 / x64)のものを選びます。
VCRUNTIME140.dll が見つからないため、コードの実行を続行できません。
プログラムを再インストールすると、この問題が解決する場合があります。
DLL名の末尾にDが付くときや、api-ms-win-crt-で始まるときは、入れるものが違います(下の表)。
VCRUNTIME140.dll / MSVCP140.dllのDLL名から再頒布パッケージを決める
VCRUNTIME140.dllやMSVCP140.dllといった、名前に140が付くDLLは、Visual Studio 2015以降のv14系のツールセットで作ったアプリが使うランタイムです。Visual Studio 2017、2019、2022、2026のMSVC Build Toolsで作ったアプリは、同じ最新のv14再頒布可能パッケージを使えます(最新の再頒布可能パッケージのページ)。
| エラーに出たDLL名 | 中身 | 入れるもの |
|---|---|---|
| VCRUNTIME140.dll | C/C++のプログラムの起動と終了などを受け持つランタイム | v14再頒布可能パッケージ |
| VCRUNTIME140_1.dll | VCRUNTIME140.dllと組で使うランタイム。x64のアプリが使い、x86のアプリは使わない | v14再頒布可能パッケージ(まずx64版) |
| MSVCP140.dll(MSVCP140_1.dll、MSVCP140_2.dllなども) | C++標準ライブラリ(std::vectorなど) | v14再頒布可能パッケージ |
| mfc140.dll / mfc140u.dll | 共有DLL版のMFC | v14再頒布可能パッケージ(mfc140.dllの記事) |
| VCRUNTIME140D.dll、MSVCP140D.dll、ucrtbased.dllなど末尾にDが付くもの | Debug版のランタイム | 入れられない。配布元がReleaseでビルドし直す |
| api-ms-win-crt-runtime-l1-1-0.dllなど | ユニバーサルCRT(UCRT) | Windows 10以降はOSに含まれる。下の「入れても直らないとき」を見る |
| mfc120.dll、mfc100.dllなど140以外 | 別の世代のランタイム | DLL名から世代を調べる早見表 |
表の上の4行は、どれも同じv14再頒布可能パッケージに入っています。VCRUNTIME140.dllのあとにMSVCP140.dllやmfc140u.dllのエラーが続いて出る場合も、同じパッケージを1回入れれば、まとめて入ります。
x86版かx64版かはアプリのビット数で選ぶ
再頒布可能パッケージはアーキテクチャごとに1つずつ、vc_redist.x86.exeとvc_redist.x64.exeのように別のファイルで配られていて、Windowsではなくアプリの対象アーキテクチャに合わせて選びます。64bit版のWindowsでも、32bitのアプリを動かすにはx86版が要ります。
| アプリ | 入れるパッケージ | Microsoftの固定リンク |
|---|---|---|
| 32bit(Win32 / x86) | x86版 | vc_redist.x86.exe |
| 64bit(x64) | x64版 | vc_redist.x64.exe |


同じソースでも、x64版はC:\Windows\System32の64bitのDLLを、Win32版はC:\Windows\SysWOW64の32bitのDLLを読み込んでいます。vc_redist.x64.exeが入れるのは64bitのライブラリで、32bitのライブラリはvc_redist.x86.exeが入れるので、32bitのアプリのDLL不足はx64版を入れても直りません。
VCRUNTIME140_1.dllは、x64版のアプリだけが取り込んでいました。エラーにこの名前が出ていたら、x64版を先に入れて試します。
アプリがx86かx64かを確かめる
やり方はソースの有無で変わります。ソースがあるなら、Visual Studioの構成マネージャーを開き、exeを作るプロジェクトの「プラットフォーム」の列を見ます。Win32ならx86版、x64ならx64版です。ツールバーのソリューション プラットフォームは、プロジェクトのプラットフォームと一致するとは限りません(ソリューションのx64に、プロジェクトのWin32を割り当てることもできます)。
exeしか手元に無いときや、配るexeそのもので確かめたいときは、Visual Studioが入っているPCのDeveloper Command Promptで、exeのファイル ヘッダーを表示します。
dumpbin /headers YourApp.exe | findstr machine
machineの行が8664ならx64、14Cならx86です。exeが取り込んでいるDLLの一覧は、次のコマンドで出ます(/DEPENDENTS)。
dumpbin /dependents YourApp.exe
Visual Studioも無い利用者のPCで、配布元の資料からもビット数が分からないときは、64bit版のWindowsならx86版とx64版の両方を入れます。32bit版のWindowsにはx64版を入れられないので、x86版だけを入れます。
入れても直らないとき
エラーのDLL名の末尾にDが付いている(VCRUNTIME140D.dll、MSVCP140D.dll、ucrtbased.dllなど)ときは、Debug構成でビルドしたexeが配られています。Debug版のDLLは再頒布できず(再頒布するDLLの決め方)、再頒布可能パッケージにも入っていないので、配布元がReleaseでビルドし直す必要があります。
api-ms-win-crt-runtime-l1-1-0.dllのようにapi-ms-win-crt-で始まる名前は、ユニバーサルCRT(UCRT)の一部です。UCRTはWindows 10以降ではOSの部品で、Windows Updateで管理されています。この名前のエラーが出ているなら、Windows 10より前のOSで動かしていないかを確かめます。最新のv14再頒布可能パッケージはWindows 10 / 11とWindows Server 2016以降にしか対応していないので、古いOSではアプリの配布元に、そのOS向けの手順があるかを確かめます。
パッケージを入れたのに直らないときは、入っている版が古い場合があります。再頒布可能パッケージの版は、アプリのビルドに使ったMSVC Build Toolsと同じか新しいものが要ります。古いインストーラーを使い回さず、上の固定リンクから取り直して入れ直します。
ダウンロードサイトから拾ったVCRUNTIME140.dllをexeの横に置く方法は避けます。再頒布可能パッケージで入れたライブラリはWindows Updateで更新されますが、exeの横に置いたDLLは、置いた人が自分で更新し続けることになります。
まとめ
- VCRUNTIME140.dll、VCRUNTIME140_1.dll、MSVCP140.dll、mfc140u.dllは、どれもVisual C++ v14再頒布可能パッケージに入っている。
- x86版とx64版は、Windowsではなくアプリのビット数で選ぶ(dumpbinのmachineが14Cならx86、8664ならx64)。
- 末尾にDが付くDLLはDebug版で、配布元がReleaseでビルドし直す。api-ms-win-crt-で始まるDLLは、Windows 10以降ならOSに含まれる。
