MFCアプリを起動したときに mfc140.dll が見つからない(または mfc140u.dll)と出たら、まず対象OSとアプリを作ったVisual Studioの世代を確認します。Windows 10 / 11またはWindows Server 2016以降で、Visual Studio 2017〜2026のMSVC Build Toolsを使ったアプリなら、必要なのは最新のVisual C++ v14再頒布可能パッケージです。DLL単体を拾ってきてexeの横に置く必要はありません。
mfc140u.dll が見つからないため、コードの実行を続行できません。
プログラムを再インストールすると、この問題が解決する場合があります。
この記事は mfc140.dll / mfc140u.dll に絞ります。ただし、このDLL名はVisual Studio 2015で作られたアプリにも現れます。Visual Studio 2015の再頒布可能パッケージはサポート終了済みで、最新v14の固定リンクを古いWindowsへそのまま案内することもできません。古いOSやビルド世代が不明なアプリでは、先に配布元の動作環境を確認してください。
最初に読むのはエラーに出たDLL名
末尾の u はUnicode版で、必要なパッケージは mfc140.dll と同じです。世代(140 / 120 / 100)と、末尾に d が付いていないかだけを見ます。
| DLL名 | 判断 |
|---|---|
mfc140.dll / mfc140u.dll | この記事:OSとビルド世代を確認してv14再頒布可能パッケージを選ぶ |
mfc140d.dll / mfc140ud.dll | Debug版。再頒布できないため、配布元がReleaseでビルドし直す |
mfc120.dll / mfc120u.dll | VC++ 2013の記事を読む |
mfc100.dll / mfc100u.dll | VC++ 2010の記事を読む |
| 複数世代をDLL名から判別したい | DLL名から再配布パッケージを特定する早見表 |
配布先で mfc140ud.dll を要求している場合は、再頒布パッケージを入れ直しても直りません。MicrosoftはDebug版MFC DLLを再頒布不可としているので、これは配布元のビルド構成の問題です。
mfc140.dllはv14系のMFCランタイム
mfc140.dll と mfc140u.dll は、共有DLL版のMFCアプリが実行時に使うMFCランタイムです。MicrosoftのMFCライブラリの再頒布でも、Visual Studio 2015の例としてこの2つが挙げられています。
ここで古い世代と勝手が違います。Visual Studio 2017、2019、2022、2026のMSVC Build Toolsで作ったアプリは、同じ最新のv14パッケージで動きます。VC++ 2013やVC++ 2010のように、IDEの年ごとに別のパッケージを探す作業は要りません。
この「最新」を使えるのは、現行パッケージの対応OSであるWindows 10 / 11とWindows Server 2016 / 2019 / 2022 / 2025です。Visual Studio 2015で作られたアプリはバイナリ互換性がありますが、VS2015自体と同世代の再頒布可能パッケージは2025年10月15日にサポートを終了しました。Microsoftも、対応OS上ではサポート中のMSVC Build Toolsへ更新し、最新v14ランタイムへ移行するよう案内しています。
x86アプリにはx86パッケージが必要
次の固定リンクは、上記の対応OSでVisual Studio 2017〜2026のアプリを動かす場合に使います。Windows 8.1以前などのレガシーOSでは最新v14を前提にせず、アプリの配布元が示す対応環境と再頒布パッケージを確認します。
選ぶ基準はWindowsのビット数ではなく、起動するアプリの対象アーキテクチャです。64bit版Windows上でも、32bitアプリにはx86版が必要です。ソースがあるなら、Visual Studioの構成プラットフォームが Win32 ならx86、x64 ならx64を選びます。
| アプリ | 入れるパッケージ | Microsoftの固定リンク |
|---|---|---|
| 32bit(Win32) | x86 | vc_redist.x86.exe |
| 64bit(x64) | x64 | vc_redist.x64.exe |
開発機で依存先を確かめるなら、Developer Command Promptで次を実行します。mfc140u.dll のほかに vcruntime140.dll や msvcp140.dll が並んでも、DLLを個別に探す必要はありません。同じv14パッケージにまとめて入っています。
dumpbin /dependents YourApp.exe | findstr /i "mfc vcruntime msvcp"
ソースもVisual Studioもない利用者側では、配布元の動作環境を確認します。判断できなければx86とx64の両方を入れてしまって構いません。両者は別アーキテクチャ用のライブラリとして共存します。
再頒布パッケージはビルドツールより古くできない
配布先に入れる再頒布可能パッケージは、アプリのビルドに使ったMSVC Build Toolsと同じか、それより新しい必要があります。メジャーバージョンはツールセットと一致させ、マイナーバージョンは同じか上にします。
ここで引っかかるのが、社内のインストーラーに何年も前の vc_redist.x64.exe を同梱したまま、ビルド側だけVisual Studioを更新している構成です。新しいツールセットで作ったexeに古いv14インストーラーを組み合わせるのはサポートされません。対応OSへ配布する場合は、そのつどMicrosoftの最新サポート版ダウンロードページから取り直します。
DLLを1個ずつコピーしても依存関係は直らない
mfc140.dll だけをダウンロードサイトから拾ってexeの横へ置く方法は避けます。MFCは共有CRTも使うため、1個を足すと次は別のDLL不足や版の食い違いが出ます。出所の分からないDLLが混ざると、直ったあとの構成も説明できなくなります。
開発者がアプリローカル配置を選ぶこと自体はできますが、Microsoftが推奨しているのはWindows Updateで各ライブラリを更新できる中央配置です。保守対象のアプリなら、再頒布可能パッケージによる中央配置へ戻したほうが、後々の更新を追いかけずに済みます。
まとめ
mfc140.dll/mfc140u.dllはv14系のMFCランタイム。最新v14を入れる前に、対象OSとアプリのビルド世代を確認する。- VS2017〜2026のアプリで、Windows 10 / 11またはWindows Server 2016以降なら、Microsoftの最新v14を使う。VS2015や古いOSは別扱い。
- Win32アプリはx86、x64アプリはx64。OSではなくアプリに合わせる。迷ったら両方。
- 入れる版は、ビルドに使ったツールセットと同じか新しいもの。保存してあった古いインストーラーを使い回さない。
- 末尾dはDebug版で再頒布不可。配布元がReleaseでビルドし直す。
