VC 2010, потребовалось использовать Boost.ASIO. В дебаговом билде из-за тормозни откючены отладочные итераторы при помощи #define _HAS_ITERATOR_DEBUGGING 0
Буст собрался нормально, но при попытке его использования линкер выдаёт:
libboost_system-vc100-mt-sgd-1_46.lib(error_code.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj
libcpmtd.lib(stdthrow.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj 1>C:\****\projectname.exe : fatal error LNK1319: 2 mismatches detected
Я так понимаю, что даже если пересоберу Boost, линкер всё равно ругнётся на несоответствие между ним и libcpmtd.lib.
Без дебагового билда не обойтись, отладочные итераторы включать нельзя — даже тестовые сборки обязаны нормально работать в реальном времени, чего при просаживании произвоительности на порядок не получится (смотрел исходники — там эти итераторы при каждом обращении дёргают критическую секцию, зомгвтф).
Здравствуйте, MaxSem, Вы писали:
MS>VC 2010, потребовалось использовать Boost.ASIO. В дебаговом билде из-за тормозни откючены отладочные итераторы при помощи #define _HAS_ITERATOR_DEBUGGING 0
MS>Буст собрался нормально, но при попытке его использования линкер выдаёт: MS>libboost_system-vc100-mt-sgd-1_46.lib(error_code.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj MS>libcpmtd.lib(stdthrow.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj 1>>C:\****\projectname.exe : fatal error LNK1319: 2 mismatches detected
MS>Я так понимаю, что даже если пересоберу Boost, линкер всё равно ругнётся на несоответствие между ним и libcpmtd.lib.
Что такое libcpmtd.lib и почему оно зависит от бустовского флага? Или это не бустовский флаг?
Здравствуйте, MaxSem, Вы писали:
MS>Здравствуйте, jazzer, Вы писали:
J>>Что такое libcpmtd.lib и почему оно зависит от бустовского флага? Или это не бустовский флаг?
MS>libcpmtd.lib — стандартная либа рантайма, флаг — не бустовский, а STL-ный.
Может тогда линковаться с релизной версией рантайма (без буквы d в конце)?
Здравствуйте, MaxSem, Вы писали:
MS>VC 2010, потребовалось использовать Boost.ASIO. В дебаговом билде из-за тормозни откючены отладочные итераторы при помощи #define _HAS_ITERATOR_DEBUGGING 0
MS>Буст собрался нормально, но при попытке его использования линкер выдаёт: MS>libboost_system-vc100-mt-sgd-1_46.lib(error_code.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj MS>libcpmtd.lib(stdthrow.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in App.obj 1>>C:\****\projectname.exe : fatal error LNK1319: 2 mismatches detected
MS>Я так понимаю, что даже если пересоберу Boost, линкер всё равно ругнётся на несоответствие между ним и libcpmtd.lib.
1) пересобрать буст c #define _HAS_ITERATOR_DEBUGGING 0