【MFC】mfc140.dllが見つからない:v14再頒布パッケージの対応OSとx86/x64

【MFC】mfc140.dllが見つからない:v14再頒布パッケージの対応OSとx86/x64

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.dllDebug版。再頒布できないため、配布元がReleaseでビルドし直す
mfc120.dll / mfc120u.dllVC++ 2013の記事を読む
mfc100.dll / mfc100u.dllVC++ 2010の記事を読む
複数世代をDLL名から判別したいDLL名から再配布パッケージを特定する早見表

配布先で mfc140ud.dll を要求している場合は、再頒布パッケージを入れ直しても直りません。MicrosoftはDebug版MFC DLLを再頒布不可としているので、これは配布元のビルド構成の問題です。

mfc140.dllはv14系のMFCランタイム

mfc140.dllmfc140u.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)x86vc_redist.x86.exe
64bit(x64)x64vc_redist.x64.exe

開発機で依存先を確かめるなら、Developer Command Promptで次を実行します。mfc140u.dll のほかに vcruntime140.dllmsvcp140.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でビルドし直す。
目次