2016-04-11 24 views
1

私はVS2015を使用してプロジェクトで使用されるDLLを作成しています(別のPCで実行されます)。デバッグランタイムDLLを取り除く方法

私は私のPC上でリリースバージョンでDLLを構築する必要がありますが、私は別のPC上でプロジェクトを開始するとき、私は次のエラーを取得:

  • VCRUNTIME140D.dllはMSVCP140D.dllが
  • が欠落している
  • が欠落しています
  • MSVCP140D.dllは、これらのDLLを作成しながら、これらのデバッグランタイムDLLは、任意のPC上でのプロジェクトの実行に必要とされないように私が取るべきどのような手順

が不足しています。

+0

「別のPCでプロジェクトを開始する」とはどういう意味ですか?あなたのDLLを使用するいくつかのプログラムを実行しますか?それをIDEにロードしますか?他に何か? –

+0

私は、プロジェクトの実行可能ファイルを別のPCで実行しようとすると、そのことを意味します。実行可能ファイルには、私が作成したDLL(例:myDLL_1.dll、myDLL_2.dll)が必要です。 VS2015がインストールされておらず、別のPCにインストールされていないため、別のPCで.exeを実行しようとすると、上記のようにエラーが発生します。 – skm

+0

*あなたの* DLLのためだと確信していますか?または*特定の* DLL? *すべてのDLLはリリースモードでビルドされており、デバッグの依存関係はありません。実行可能プログラムと同じですが、デバッグの依存関係のないリリースモードでビルドされていますか? –

答えて

2

リリースモードでビルドされているにもかかわらず、 "... D.dll"が必要な場合、ミックスにデバッグビルドがあります。

これはサードパーティのDLLの結果である可能性があります。DEBUGまたは_DEBUGが浮動小数点を定義している可能性があります。

ほとんどの場合、ビルド(dllまたはホストexe)は、ランタイムのデバッグバージョン(/MDd)を使用するように明示的に設定されています。 Change this in the project settingsは、ランタイムのデバッグバージョン(/MD)を使用しません。

  1. プロジェクトの[プロパティページ]ダイアログボックスを開きます。
  2. C/C++フォルダーを展開します。
  3. [コード生成]プロパティページを選択します。
  4. ランタイムライブラリプロパティを変更します。あなたが犯罪者を追跡するためにDependency Walkerを使用することができ、デバッグの依存関係を担当しているバイナリの診断を支援するために

。これは、各ファイルの依存関係の一覧を(ツリーとして)表示します。

一般に、ターゲットマシンでC++ランタイム(リリースバージョン)が不足しているため、C++再配布可能ファイルをインストールする必要があります。この記事の執筆時点では、VS 2015再頒布可能なものはhereです。 >コード生成 - - C/C++

+0

私はプロパティを '/ MT'に変更しましたが、' VCRUNTIME140D.dll'の代わりに 'VCRUNTIME140.dll'というエラーが出ます。 – skm

+0

@skm。ランタイムを必要とするdll(またはexe)はまだありますが、今回はC++ランタイムの「リリース」バージョンです。 – Niall

+0

つまり、残りのexeとdllがランタイムに依存する場合は、同様に実行することをお勧めします。これは、リソース管理などに関する一連の問題を緩和します。おそらく '/ MD' – Niall

0

>設定ランタイムライブラリへ:

  • マルチスレッドデバッグ(/MTdに

そして、はい、このような設定は、リモートマシン上のプロセスをデバッグする場合に非常に必要です。ですから、「リリースビルドだけでテストする」と言ってみてはいけません。明らかに、リモートツールがインストールされている必要があります。

1

Niallによると、エラーの原因となっているプロジェクトの部分を見つけるためには、dependency walkerを使用する必要があります。結局、問題のDLLではない可能性があります。

私は忘れてしまったデバッグモードでビルドしたプロジェクトのほんの一部ですが、デバッグ用のDLLはC++の再配布可能インストーラには含まれていないため、本番環境では使用しないでください。

+0

それは、プロジェクトの残りの部分が別のマシンにも存在する別のツールで作成されているためです。さらに、以下の回答に示された提案に従うことで、エラーが変わった。今、 'VCRUNTIME140D.dll'が見つからないのではなく、' VCRUNTIME140.dll'が見つからないというエラーが表示されます。 – skm

+0

VS2015の[C++ランタイム](https://www.microsoft.com/en-eg/download/details.aspx?id=48145)が他のマシンにインストールされていますか? – aybassiouny

関連する問題