У меня есть статический S.lib, который используется моим D.dll.
Я пытаюсь использовать #pragma detect_mismatch, чтобы убедиться, что оба были скомпилированы с одинаковыми настройками выпуска или отладки.
Я следовал инструкциям Хольгера Грунда здесь
http://boost.2283326.n4.nabble.com/Boost-and-Microsoft-s-SECURE-SCL-td3025203.html
свалка на S.lib показывает:
Linker Directives
-----------------
/FAILIFMISMATCH:"COMPILED_DEBUG=1"
/INCLUDE:_dll_impl_interface_mismatch_check
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
Я успешно компилирую D.dll, чего не должно быть.
dumpbin на Dlib D.lib показывает:
Linker Directives
-----------------
/FAILIFMISMATCH:"COMPILED_DEBUG=2"
/INCLUDE:_dll_impl_interface_mismatch_check
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"uuid.lib"
/FAILIFMISMATCH:"_MSC_VER=1600"
/FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=2"
/DEFAULTLIB:"msvcprtd"
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
Любая помощь будет принята с благодарностью.
EDIT:
Я случайно определил символ 'dll_impl_interface_mismatch_check' в ОБА моей статической библиотеке и моей потребляющей DLL. Это означало, что символ не был найден в статической библиотеке S.lib, а директива о несоответствии не была найдена. Я думаю.