web-dev-qa-db-ja.com

MSVCP120d.dllがありません

Visual Studioプロジェクトをコンパイルするたびに、MSVCP120d.dllが見つからないというメッセージが表示されます。 Googleは私を助けられません。すでにいくつかの再配布可能ファイルをインストールしましたが、助けにはなりませんでした。私もこれを見つけました:

Msvcp120d.dll C++ランタイムのデバッグバージョン。再配布は許可されていません。

http://msdn.Microsoft.com/en-us/library/windows/hardware/dn448963(v = vs.85).aspx

38
MazzMan

コメントから、問題はVisual Studio 2012でコンパイルされたプロジェクトでVisual Studio 2013でビルドされたdllを使用したことが原因でした。この理由は、dll vc11、vc12を含むフォルダーという名前のサードパーティライブラリでした。これはVisual Studioのバージョン(Visual Studio 2010を除く)と一致しないため、コンパイラバージョン(4桁未満)を使用するシステムには注意する必要があります。

  • vc8 = Visual Studio 2005
  • vc9 = Visual Studio 2008
  • vc10 = Visual Studio 2010
  • vc11 = Visual Studio 2012
  • vc12 = Visual Studio 2013
  • vc14 = Visual Studio 2015
  • vc15 = Visual Studio 2017
  • vc16 = Visual Studio 2019

Microsoft C++ランタイムdllは、Visual Studioのバージョンではなく、コンパイラバージョンにも基づいて2桁または3桁のコードを使用します。

  • MSVCP80.DLLはVisual Studio 2005のものです
  • MSVCP90.DLLはVisual Studio 2008のものです
  • MSVCP100.DLLはVisual Studio 2010のものです
  • MSVCP110.DLLはVisual Studio 2012のものです
  • MSVCP120.DLLはVisual Studio 2013のものです
  • MSVCP140.DLLはVisual Studio 2015、2017、2019からのものです

Visual Studio 2015、2017、2019の間にバイナリ互換性があります。

55
drescherjm

私はこれに関する解決策を探すのに時間を浪費していることに気づきました、そして、私は将来再びそれをすることを疑います。それで、ここに私とこれが役に立つと思うかもしれない他の人へのメモがあります。

MSVCP120.DLLがない場合、Visual Studio 2013(x86およびx64)用のVisual C++再頒布可能パッケージがインストールされていないことを意味します。それをインストールして再起動すると、このファイルがc:\ Windows\System32にあります。

MSVCP120D.DLLが見つからない場合、これは実行しようとしているアプリケーションがデバッグモードでビルドされていることを意味します。 OPが述べたように、ランタイムのデバッグバージョンは配布できません。

どうしようか?

私が知っているオプションが1つあります。プロジェクトの[デバッグ構成]> [C/C++]> [コード生成]> [ランタイムライブラリ]に移動し、[マルチスレッドデバッグ(/ MTd)]を選択します。これにより、MSVCP120D.dllが実行可能ファイルに静的にリンクされます。

何かをすぐに起動したい場合は、クイック修正もあります。sys32(私のものはC:\ Windows\System32)フォルダーからMSVCP120D.DLLをコピーします。 MSVCR120D.DLLも必要になる場合があります。

クイックフィックスの補足:当て推量を減らすには、 dependency walker を使用できます。依存関係ウォーカーでアプリケーションを開くと、必要なdllファイルが表示されます。

たとえば、最近のアプリケーションはVisual Studio 2015(Windows 10 64ビットマシン)でビルドされ、32ビットWindows XPマシンをターゲットにしています。依存関係ウォーカーを使用して、私のアプリケーション (スクリーンショットを参照) は以下のファイルを必要とします:

  • opencv _ *。dll <-自分のdllファイル(依存関係もある可能性があります)
  • msvcp140d.dll <-SysWOW64\msvcp140d.dll
  • kernel32.dll <-SysWOW64\kernel32.dll
  • vcruntime140d.dll <-SysWOW64\vcruntime140d.dll
  • ucrtbased.dll <-SysWOW64\ucrtbased.dll

ビルドしたopencv *ファイルとは別に、C:\ Windows\SysWow64(32ビットのSystem32)からシステムファイルをコピーする必要があります。

どういたしまして。 :-)

41
bot3663369

32ビットバージョンのmsvcr120d.dllmsvcp120d.dllをダウンロードしてから、プロジェクトのDebugフォルダーに入れました。うまくいきました。 (私のコンピューターは64ビットバージョンです)

3
Anandi

私の問題は、リモートテストマシンに展開されたx64コンパイルにありました。 x64バージョンのmsvp120d.dllおよびmsvcr120d.dllを見つけました

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\Debug_NonRedist\x64\Microsoft.VC120.DebugCRT
2
Kevin Johnsrude

VS 2015にOpenCV 2.4.11を実装すると、同じ問題が発生します。この問題を3つの方法で1つずつ解決しようとしましたただし、機能しませんでした

  1. mSVCP120.DLLをオンラインでダウンロードし、WindowsパスとOpenCV binファイルパスに追加します
  2. x86とx86の両方のVisual Studio 2013にVisual C++再頒布可能パッケージをインストールする
  3. デバッグモードを調整します。 [構成]> [C/C++]> [コード生成]> [ランタイムライブラリ]に移動し、[マルチスレッドデバッグ(/ MTd)]を選択します。

最後に、この問題をインストール可能なすべてのオプションを選択してVS2015を再インストールするで解決しました。これには多くのスペースが必要ですが、実際に機能します。

2
rookiechen

Visual Studio Pro 2017でも同じ問題が発生しました。リリースモードではMSVCP120.dllファイルが、デバッグモードではMSVCP120d.dllファイルがありません。 Visual Studio 2013のVisual C++再頒布可能パッケージ および Visual C++ 2013およびVisual C++再頒布可能パッケージの更新 ここで提案されているようにインストールしました Microsoft回答 これは修正されましたリリースモード。デバッグモードで最終的に機能したのは、msvcp120d.dllとmsvcr120d.dllを別のコンピューター(Visual Studio 2013を使用)からC:\ Windows\System32にコピーすることでした。

1
lahmania