Я использую Visual C ++ 2008, SP1. У меня есть приложение QT (gui, .exe) в конфигурации отладочной сборки. Он настроен на использование многопоточной отладочной DLL-версии CRT, также известной как MSVCRTD.lib.
Я ссылаюсь на стороннюю библиотеку, которая встроена в режим выпуска и использую многопоточную DLL-версию (не отладочную) CRT, также известную как MSVCRT.lib.
Связывает и запускает, но вылетает при запуске. При связывании получаю предупреждение:
ССЫЛКА: предупреждение LNK4098: defaultlib 'MSVCRT' конфликтует с использованием других библиотек; использовать / NODEFAULTLIB: библиотека
Я попытался установить /NODEFAULTLIB:msvcrt.lib
но это привело к 5 ошибкам связывания из-за пропущенных символов.
Так нельзя ли использовать две разные библиотеки? Какая альтернатива? Могу ли я создать DLL из сторонней библиотеки? Или это что-то, что должна сделать третья сторона?
Исключение при запуске:
"Необработанное исключение при ....... в MyApp.exe: ......
Место чтения нарушения доступа 0x00000000f "
Ниже приведен стек вызовов после запуска приложения и его сбоя:
MyApp.exe!std::_Aux_cont::_Getcont() + 0xa bytes C++
MyApp.exe!std::_Iterator_base_aux::_Getmycont() + 0x1b bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::const_iterator::operator*() + 0x28 bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::iterator::operator*() + 0xf bytes C++
MyApp.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> > >::operator[]() + 0xe9 bytes C++
MyApp.exe!ThirdPartyLib::client::`anonymous namespace'::init_xlt_mode() + 0x5f bytes C++
MyApp.exe!_GetCommandLineW@0() + 0x8d8f3 bytes C++
msvcr90d.dll!_initterm(void (void)* * pfbegin=0x006c4468, void (void)* * pfend=0x006cb0b8) Line 903 C
MyApp.exe!__tmainCRTStartup() Line 501 + 0xf bytes C
MyApp.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!7c817067()