Visual Studio(C++)ソリューションを別のコンピューターに移動し、表示される限りすべてのディレクトリと設定をセットアップし、ソリューションをクリーン/リビルドしました。コンパイル時に.objの束で上記のエラーが表示されますが、どうすればよいかわかりません。
異なる設定で作成されたオブジェクトファイルをミキシングしているようです。完全なクリーンリビルドを実行し、すべてのプロジェクトファイル設定を確認して、_ITERATOR_DEBUG_LEVELマクロが同じであることを確認してください(たとえば、デバッグとリリースビルドオブジェクトを混在させていない)。
バイナリ(オブジェクトファイル)の混在が1つの理由です。もう1つ(私が遭遇した)は、リリースビルドの_DEBUG
マクロの誤った定義です。 _DEBUG
は標準マクロではありませんが、Microsoftによって使用されます。
Emacsで。vcxproj-ファイルを編集した後、リリースでNDEBUG
の代わりに_DEBUG
を誤って入力すると、まったく同じビルドエラーが発生しました。
場合によっては、オプションを組み合わせて
プロパティ>構成プロパティ> C/C++>コード生成>ランタイムライブラリ
含まれているライブラリと現在作業中のプロジェクトの間でこの問題が発生する可能性があります。
使用状況に応じて、/MD
または/MT
または/MDd
または/MTd
すべてのプロジェクトにわたって均一に。
私はこの問題を5日間解決しようとしています。ポイントクラウドライブラリ(PCL)コードは、デバッグモードでは正常にビルドされますが、リリースモードでは失敗します。
ライブラリを数回再構成しましたが、役に立ちませんでした。この問題は、リリースバージョンが_DEBUGを継承しているため、プロジェクトプロパティ>>プリプロセッサ>>プロセッサ定義でチェックを外して解決されたことがわかりました。
(奇妙なことに)_CRT_NON_CONFORMING_SWPRINTFSが原因であることがわかりました。削除しても、「_ iterator_debug_level値 '0'が値 '2'と一致しません」というメッセージは表示されませんが、代わりに次の警告が表示されます。
エラー6エラーC4996: '_swprintf':ISO C標準に準拠するようにswprintfが変更され、余分な文字カウントパラメーターが追加されました。従来のMicrosoft swprintfを使用するには、_CRT_NON_CONFORMING_SWPRINTFSを設定します。