web-dev-qa-db-ja.com

_iterator_debug_levelの値「0」が値「2」と一致しません

Visual Studio(C++)ソリューションを別のコンピューターに移動し、表示される限りすべてのディレクトリと設定をセットアップし、ソリューションをクリーン/リビルドしました。コンパイル時に.objの束で上記のエラーが表示されますが、どうすればよいかわかりません。

38
tweetypi

異なる設定で作成されたオブジェクトファイルをミキシングしているようです。完全なクリーンリビルドを実行し、すべてのプロジェクトファイル設定を確認して、_ITERATOR_DEBUG_LEVELマクロが同じであることを確認してください(たとえば、デバッグとリリースビルドオブジェクトを混在させていない)。

29

バイナリ(オブジェクトファイル)の混在が1つの理由です。もう1つ(私が遭遇した)は、リリースビルドの_DEBUGマクロの誤った定義です。 _DEBUGは標準マクロではありませんが、Microsoftによって使用されます。

Emacsで。vcxproj-ファイルを編集した後、リリースでNDEBUGの代わりに_DEBUGを誤って入力すると、まったく同じビルドエラーが発生しました。

17

場合によっては、オプションを組み合わせて

プロパティ>構成プロパティ> C/C++>コード生成>ランタイムライブラリ

含まれているライブラリ現在作業中のプロジェクトの間でこの問題が発生する可能性があります。

使用状況に応じて、/MDまたは/MTまたは/MDdまたは/MTdすべてのプロジェクトにわたって均一に。

私はこの問題を5日間解決しようとしています。ポイントクラウドライブラリ(PCL)コードは、デバッグモードでは正常にビルドされますが、リリースモードでは失敗します。

ライブラリを数回再構成しましたが、役に立ちませんでした。この問題は、リリースバージョンが_DEBUGを継承しているため、プロジェクトプロパティ>>プリプロセッサ>>プロセッサ定義でチェックを外して解決されたことがわかりました。

1
John Duke

(奇妙なことに)_CRT_NON_CONFORMING_SWPRINTFSが原因であることがわかりました。削除しても、「_ iterator_debug_level値 '0'が値 '2'と一致しません」というメッセージは表示されませんが、代わりに次の警告が表示されます。

エラー6エラーC4996: '_swprintf':ISO C標準に準拠するようにswprintfが変更され、余分な文字カウントパラメーターが追加されました。従来のMicrosoft swprintfを使用するには、_CRT_NON_CONFORMING_SWPRINTFSを設定します。

0