相关疑难解决方法(0)

C++使用我的调试版本链接发布内置库

我已经下载了第三方库,并在'release'模式下构建了.lib文件.将lib添加到我的项目后,如果我在发布模式下运行我的项目,那很好.但如果我在调试模式下运行我的项目,我会收到一个错误:

_iterator_debug_level value '0' doesn't match value '2;
Run Code Online (Sandbox Code Playgroud)

我可以在调试模式下重建库,但我不认为我需要调试库本身?我已经下载了预先构建的第三方库,之前只有一个版本构建(我假设?),无论我的项目是在调试还是发布,它都能很好地链接.我想知道如何做到这一点.

c++

12
推荐指数
1
解决办法
1万
查看次数

如何针对发布版本的lib(MSVCRT.lib)构建调试.exe(MSVCRTD.lib)?

我正在使用Visual C++ 2008,SP1.我在调试构建配置中有一个QT应用程序(gui,.exe).它设置为使用CRT的多线程调试DLL版本,即MSVCRTD.lib.

我正在链接第三方库,该库是在发布模式下构建的,并使用CRT的多线程DLL(非调试)版本,即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++ …
Run Code Online (Sandbox Code Playgroud)

c++ linker visual-studio visual-c++

5
推荐指数
1
解决办法
6400
查看次数

标签 统计

c++ ×2

linker ×1

visual-c++ ×1

visual-studio ×1