2

重複の可能性:
LNK2038、反復子の不一致エラー、無視する必要があります

C/C++ ランタイムと静的にリンクされているサードパーティの静的ライブラリもあります。このライブラリのリリース ビルドしかありません。

このライブラリをアプリケーションのデバッグ ビルドにリンクしようとすると、スタティック ライブラリのイテレータ デバッグ レベル (0) がアプリケーションのレベル (2) と一致しないというエラーがリンカから出されます。

リンカーにこのエラーを無視させる方法はありますか? このライブラリによって追加された機能をデバッグ モードで使用できるようにしたいのですが、このライブラリのデバッグ ビルドを取得することはできません。

余談ですが、この定義の不一致から生じる問題はすぐには思いつきません。

4

1 に答える 1

4

標準では、「コンテナへの変更後、イテレータは未定義です」などと書かれています。一部のデバッグ モード STL はこのエラーをチェックしますが、ほとんどのリリース モード STL はチェックしません。これらのチェックを実装するために、デバッグ モードのコンテナーまたはイテレーター クラスに追加のメンバー変数があります。

そのため、コンテナ クラスまたはイテレータ クラスのバイト数が異なる可能性があるため、デバッグ バージョンとリリース STL バージョンを混在させることはできません。同じことが、デバッグ モードとリリース モードの間で異なるメンバー変数を持つすべてのクラスで発生する可能性があります。

于 2013-01-02T20:41:14.833 に答える