2013-05-18 13 views
9

私はC++プログラミングの初心者です。私は友人と共有することに決めました。そしていくつかの試みの後で、それをリリースモードでどのようにコンパイルするかを考えました。ただし、リリースモードでさえ、それは依然としてMSVCP110D.dllに依存しています。私はこれを修正する方法があるかどうか疑問に思っていましたか?リリースモードはまだMSVCP110D.dll(C++ MSVS)に依存しています

+0

私が引っ張っています唯一の外部のリソースがあるの#include「stdafx.hを」 の#include の#include の#include しかし、私はリリースモードで、これは外部のリソースのためのすべての必要性を除去するであろうという印象の下にあったとそれ自体の内部で完全に実行されます。 –

+0

msvcp100d.dllに依存していることをあなたがどのように知っているか説明しないことで、あなた自身や私たちを助けているわけではありません。 **あなたはmsvcp110.dllのリリースビルドに依存していますが、iostream用のコードが含まれています。 .exe、msvcr110.dllと一緒にコピーする必要があります。または、/ MTを有効にしてビルドするだけで、DLLを使用しない単純なプログラムでも問題ありません。 –

+0

依存性ウォーカーを使用しようとしましたか? – makc

答えて

6

1)MSVCP110D.dllは、MS Cランタイムライブラリの「デバッグ」バージョンのランタイム.dllです。だからあなたの.exeは、 "Release"のために作られていないかもしれないようです。

http://www.microsoft.com/en-us/download/details.aspx?id=30679

3)ここでは、この特定の問題についての詳細は次のとおりです:残念ながら

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/e128dff6-cef5-4a81-b6de-fcbcaa7a23bb

2)ここで、 "Visual Studioのランタイム再頒布" するための情報でありますmsvcp100D.dllはデバッグDLLであり、Microsoft Visual C++ Redistrutableパックには が含まれていません年齢。これは、 通常のデバッグバージョンは開発者以外にリリースされていないためです。 開発者は、Visual Studioでデフォルトでインストールしています。

"Release"でプロジェクトをコンパイルすると、 が必要なすべてのDLLがMicrosoft Visual C++ Redistrutableパッケージに含まれます。

そうでない場合は、あなたが(コンパイラオプションにデバッグ構成で リリースおよび/ MTdにに/ MTを指定する)すべてのライブラリの静的リンクを行うことができますが、あなたが実行可能な多くの 情報に入れbecouse は個人的に私はそれをお勧めしません。 (デバッガで使用される)アプリケーションの速度が遅くなります。

+0

は私のために解決しました。最近、同様の問題が発生しました。私の結果のDLLが/ Ddを/ MDに変更したが、同じ理由で正しいとは思わなかったMSVCP100D.dllにも依存していたため、正しいDLLVにMSVCR100.dll(Dなし)が依存していました。長い調査の後、私はそれがプリプロセッサ定義に依存することを発見した。 _DEBUGをDEBUGに変更すると、私の問題が解決しました。 – Nahum

3

私はあなたの問題は、DLLのデバッグバージョンに依存していると推測しています&は、DLL自体に依存しません。

それはあなたが/DDEBUGでコンパイルするとmsvcpd.lib

とリンク/DDEBUGまたは/D_DEBUG OR

  • でコンパイルこれら2つのこと

    1. のいずれかを実行することか可能性が高いです/D_DEBUG、および#include標準のC++ヘッダーの1つで、msvcpd.lib i (with a #pragma(lib)に引っ張られ、msvcpd ***。dllに依存します。

      msvcp(d)* .dllは、標準C++ライブラリのdllバージョンです。

      代わりに、dllの任意のバージョン、つまり静的にC++ライブラリにリンクしたい場合は、_STATIC_CPPLIBでプログラムをコンパイルできます。

  • +0

    すみません、私は信じられないほど新しいことです。しかし、DLLを静的にリンクするにはどうしたらいいですか?私はそれをコンパイルすると、コンパイルタイプをデバッグからリリースに変更しました。その後、自分の.exeと.cppを含むリリースフォルダを作成しました。 –

    +0

    @ user2396111ソリューション - >プロパティ、C/C++、プリプロセッサ - > _STATIC_CPPLIBを右クリックして、さまざまな既存のプリプロセッサ定義に追加します。また、そこにいるときは、DEBUGまたは_DEBUGがすでに定義されているかどうかを確認してください。 – user93353

    +1

    これはそれではなく、VS2012の廃止予定のオプションです。 C/C++、コード生成、ランタイムライブラリ=/MT –

    0

    追加のライブラリを使用していますか? おそらく、実行可能ファイルにdllファイルのデバッグバージョンを含めたことがあります。

    関連する問題