web-dev-qa-db-ja.com

Visual C ++実行可能ファイルとMSVCR100d.dllの欠落

私はこれが他の場所で尋ねられて答えられたことを知っていますが、MS Visual Studio 2010で問題があります。C++実行可能ファイルを開発しましたが、VC++ランタイムライブラリがないマシンでリリースバージョンを実行する場合(つまり、msvcr100d.dll)、「msvcr100d.dllがコンピューターにないため、プログラムを開始できません」というエラーが表示されます。

これは2つの理由で奇妙です。

  • なぜ再配布可能ファイルのデバッグバージョンとリンクしようとしているのですか?
  • この修正 を適用しようとしましたが、ランタイムライブラリ設定を/ MD(マルチスレッドDLL)ではなく/ MTに設定しましたが、それだけで問題が悪化しました(手動でmsvcr100d.dllをコピーした場合、 msvcp110.dllが見つからなかったと言いました)。

MS VC 2010または再頒布可能パッケージがインストールされていないマシンで実行できるように、ランタイムライブラリを実行可能ファイルにパッケージ化するにはどうすればよいですか?

DLLは更新されないため、これをコピーすることはセキュリティリスクと見なされますが、私の目標はこの実行可能ファイルを短期間に数人の友人に送信することです。

36
mgiuffrida

「リリース」モードでコンパイルする場合、CRTのデバッグバージョンは必要ありません。 dで終わるため、DLLのデバッグバージョンであることがわかります。

さらに、デバッグバージョンはnot再配布可能であるため、実行可能ファイルで「パッケージング」することや、これらのDLLを圧縮することほど簡単ではありません。

「リリース」モードでアプリケーションのallコンポーネントをコンパイルしていること、およびCRTの正しいバージョンと使用する他のライブラリをリンクしていることを確認してください。 (例、MFC、ATLなど)。

あなたはもちろんmsvcr100.dlld接尾辞がないことに注意)およびそれらがまだインストールされていない場合は他のいくつか。友達に Visual C++ 2010 Redistributable (または x64 )をダウンロードするように指示するか、インストーラーを作成してこれをアプリケーションに自動的に含めます。

42
Cody Gray

私にとっては、この状況で問題が発生しました。

VS2012をインストールしましたが、VS2010はもう必要ありません。コンピューターをクリーンにしたかったのですが、VS2010ランタイム実行可能ファイルも削除しました。他のプログラムでは使用できないと考えていました。次に、DLLをプログラムにアタッチしてテストします(プログラムXと呼びましょう)。同じエラーメッセージが表示されました。DLLのコンパイル中に何か間違ったことをしたと思いました。 、本当の問題はDLLをプログラムXに添付し、プログラムXがVS2010でデバッグ情報付きでコンパイルされたことです。それがエラーがスローされた理由です。VS2012でプログラムXエラーはなくなりました。

2
tmighty

この問題は MSDNライブラリ で説明されており、Microsoftの再頒布可能パッケージのインストールが役立つと理解しています。

ただし、次のソリューションを(開発者側のソリューションとして)使用できる場合があります。

Visual StudioでProject properties -> Configuration properties -> C/C++ -> Code generationを開き、オプションRuntime Library/MTではなく/MDに変更します

2
VolAnd

通常、.dllが見つからないアプリケーションは、必要なバージョンを示します。機能しない場合は、次のリンクからMicrosoft Visual C++ 2010 x86またはx64をダウンロードしてください。

32ビットOSの場合: ここ

64ビットOSの場合: ここ

1
Ashutosh kumar

デバッグバージョンのvc ++ライブラリdllは、再配布するためのものではありません!

アプリケーションのデバッグバージョンは再配布できません。また、Visual C++ライブラリDLLのデバッグバージョンは再配布できません。 Visual Studioがインストールされていないコンピューターでアプリケーションをデバッグおよびテストすることのみを目的として、アプリケーションのデバッグバージョンとVisual C++ DLLを他のコンピューターにのみ展開できます。詳細については、「Visual C++ファイルの再配布」を参照してください。

リンクも提供します: http://msdn.Microsoft.com/en-us/library/aa985618.aspx

1
SofDev

同じエラーが発生しました。

私はVS2012プロジェクトでVS2010 DLLを参照していました。

VS2012でDLLを再コンパイルすれば、すべて問題ありません。

1
Daniel Bonetti