3

boost buildsystem を使用して、boost serialization/filesystem/system のデバッグ ビルドをビルドしようとしています。これが私が使用するものです:

  b2 serialization filesystem system variant=debug link=static threading=multi
  runtimelink=static define=_HAS_ITERATOR_DEBUGGING=0 toolset=msvc-11.0

ただし、デバッグ ビジュアル スタジオ プロジェクトにライブラリを含めると、次のようなエラーが発生します。

(basic_iarchive.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in Game.obj

これにより、ブーストビルドでの「定義」は何の効果もなかったと信じています。適切な構文は何ですか? 例が見つかりません。ドキュメントには、この問題について他に何も書かれていません。

編集:ブーストビルドで _HAS_ITERATOR_DEBUGGING=0 を定義したいことを強制したいと思います

4

2 に答える 2

2

define=_ITERATOR_DEBUG_LEVEL=0Igorがコメントしたように、追加は私にとってはうまくいきます。

_HAS_ITERATOR_DEBUGGING上記の設定に基づいて MS-headers によって定義されるため、直接設定しようとしないでください。

0 に設定すると、場合によっては (リアルタイム 3D) デバッグ パフォーマンスが劇的に向上するため、インターフェースで STL コンテナー/イテレーターを公開するすべての DLL を再コンパイルするという苦痛にもかかわらず、それを代弁するユース ケースが確実に存在します。

于 2016-09-14T06:33:22.980 に答える