2011-06-21 8 views
0

私のVisual Studio 2008プロジェクトでは、アクティブな構成はリリースであり、デバッガシンボルはコンパイラとリンカーの設定で有効になっていません。そこデバッグDLLのMSVCR90d.dllは、実行時に慣れる必要がありますない理由はありませんが、それがないとクラッシュMicrosoft Visual Studio:デバッグDLLは、リリースモードでビルドされたバイナリで使用されます

devenv standalone_cpp.sln /build "RELEASE|WIN32" 

:私は、コマンドプロンプトからexeファイルを構築しています。私は、デバッグdllだけがリリースdll MSVCR90.dllではなく、なぜ拾われるのかという少しの手がかりを持っていません。誰かが助けてくれますか?

私は自分の.exeをクラッシュしないようにデバッグモードでビルドしようとしましたが、それでも同じアサーションエラー_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)でクラッシュします。私が自分を撃つ前に助けてください。

答えて

1

MSVS2008 Service Pack 1を再インストールしてください。インストールが壊れているようです。

大規模なDLL/EXEをリンクするときや、非常に大きなプロジェクトをコンパイルするとき、あるいは非常に大きなプロジェクトをコンパイルするときに奇妙な「内部エラー」が現れるのを見てきましたが、このような不思議な挙動が現れました大規模な翻訳単位。なんらかの理由で、サービスパックを再インストールしました。もう一つの考えはあなたがあなたのリリースの実行可能ファイルにリンクのデバッグをしたということかもしれませんhttp://www.microsoft.com/downloads/en/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en

:ここ

クイックリンクです。 "RELEASE|WIN32"のソリューションを構築したにもかかわらず、前提条件(リンクされたlibs)がデバッグバージョン(*.libが直接参照された場合、またはリリースパスではなくデバッグパスを参照した場合)そのDLLの "デバッグ"バージョンがロードしようとします。

次に、クラッシュした理由は、「リリース」モジュールで割り当てられ、「デバッグ」モジュール(またはその逆)で削除された可能性が高いからです。アロケータは異なっているので(「デバッグ」バージョンでは、センチネルやその他の「デバッグチェック」に余分な状態が割り当てられるため)、動作しません。

MSVS2008は、コマンドラインからビルドした場合でも、Tools==>Optionsにあるプロジェクト/ソリューションの設定をすべて「上書き」することに注意してください。リリースターゲットにリンクするためのデバッグパスが設定されていないことを確認します。 (それは実際は何が起こっているかを説明していないプロジェクト/ソリューションファイルにつながるので、それはマイクロソフトによって悪い決断だった、彼らは削除というMSVS2010の「機能」。)また見ている可能性があります

0

私は@Charleyはお金であると思います。

Dependency Walkerをダウンロードし、実際にデバッグDLLをロードする原因を確認してください。あなたの質問で言うことが正しければ、それはおそらくあなたがexeに依存している別の図書館でしょう。

関連する問題