43

私は自分の小さなアプリをWinXPとVS2005からWin7とVS2010に移植しようとしています。

アプリはデバッグモードでスムーズにコンパイルおよび実行されますが、リリースモードでは次のエラーが発生します。

pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for 
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj

どこからチェックを始めればいいですか?

4

5 に答える 5

40

アプリはリリースモードでコンパイルされていますが、/ MTd(または同様の)が設定されているデバッグバージョンのPCREに対してリンクしているため、CRTのイテレーターデバッグレベルに不一致が生じています。

独自のアプリケーションに一致するように、リリースモードでPCREを再コンパイルします。

VS 2010のdetect_mismatchプラグマが、このエラーの原因です。

http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspxを参照してください(_ITERATOR_DEBUG_LEVELを検索してください)

于 2010-10-31T05:17:53.643 に答える
24

同じエラーが発生しました。私の場合、解決策は簡単です。あるプロジェクトAが別のプロジェクトBに依存していました。Bにはデバッグモードのプリプロセッサ定義_DEBUGがあり、Aにはありませんでした。

プロジェクトA(プロジェクト->プロパティ-> c ++->プリプロセッサ->プリプロセッサ定義)に_DEBUGを追加するだけで、完了です。

于 2011-01-21T15:35:36.153 に答える
5

_HAS_ITERATOR_DEBUGGING=0これは、AがBによって使用されるlibを生成するAではなく、プロジェクトBでプリプロセッサ定義を設定することによっても発生する可能性があります。

于 2011-11-09T21:34:07.857 に答える
4


私の問題は、依存プロジェクトがGenerl->Charactersetの下の「UseMulti-ByteCharacterSet 」を使用していたことでした。他のプロジェクトには「設定なし」の値がありました

于 2011-06-28T11:07:58.523 に答える
0

私の場合、このエラーはプロジェクト参照がないことが原因でした。

おそらく、競合するプロジェクトを参照として追加することで、ビルドシステムは正しい構成(デバッグ/リリース)がビルドされたことを確認できました。

于 2022-01-20T11:42:32.723 に答える