【发布时间】:2010-10-19 06:42:08
【问题描述】:
我正在使用 Visual C++ 2008,SP1。我在调试构建配置中有一个 QT 应用程序(gui、.exe)。它设置为使用 CRT 的多线程调试 DLL 版本,即 MSVCRTD.lib。
我正在链接一个以发布模式构建并使用 CRT 的多线程 DLL(非调试)版本的第 3 方库,即 MSVCRT.lib。
它链接并运行,但在启动时崩溃。链接时我收到警告:
LINK:警告 LNK4098:defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library
我尝试设置 /NODEFAULTLIB:msvcrt.lib
但由于缺少符号而导致 5 个链接错误。
所以不能使用两个不同的库吗?什么是替代方案?我可以从我拥有的 3rd 方库中创建一个 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()
【问题讨论】:
-
你在启动时遇到了什么崩溃?
-
嗨,我刚刚更新了上面的原始帖子,提供了更多详细信息和对您问题的回答。
标签: c++ visual-studio visual-c++ linker