Win XPとVS 2005からWin 7とVS 2010に私の小さなアプリを移植しようとしています。
アプリはデバッグモードでコンパイルおよびスムーズに実行されますが、リリースモードでは次のエラーが発生します。
pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj
どこからチェックを始めるべきですか?
アプリはリリースモードでコンパイルされていますが、/ MTd(または同様の)セットが設定されているデバッグバージョンのPCREにリンクしているため、CRTのイテレータデバッグレベルで不一致が発生します。
独自のアプリケーションに合わせて、リリースモードでPCREを再コンパイルします。
detect_mismatch
プラグマ VS 2010では、このエラーが発生します。
http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (_ITERATOR_DEBUG_LEVELを検索)を参照してください
同じエラーが発生しました。私の場合、ソリューションは簡単です。別のプロジェクトBに依存する1つのプロジェクトAがありました。Bはデバッグモードでプリプロセッサ定義_DEBUGを持っていましたが、Aにはありませんでした。
_DEBUGをプロジェクトA(project-> properties-> c ++-> preprocessor-> preprocessor definition)に追加するだけで完了です。
これは、プリプロセッサ定義_HAS_ITERATOR_DEBUGGING=0
はプロジェクトBであり、Aではなく、AがBが使用するlibを生成します。
私の問題は、依存プロジェクトが「マルチバイト文字セットを使用」を使用したことでした
Generl-> Character setの下。他のプロジェクトには「設定なし」の値がありましたが