C++ 常见异常
关于C++异常(包括但不限于编译器异常)先开个头,有空都记下来吧:
1:_DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
有效的解决办法:
Debug版本:
项目-属性-链接器-输入:忽略特定库中输入mfc140d.lib.lib;mfcs140d.lib
项目-属性-链接器-附加依赖项:mfc140d.lib.lib;mfcs140d.lib
就可以保证mfc140d.lib.lib;mfcs140d.lib先于MSVCRTD.lib链接,编译之后又会提示:
默认库“mfc140ud.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
以及mfcs140d.lib 与其他库的使用冲突,……,如果按提示去做,你会发现问题一个接下个的来
究其根本原因就是你所开发编译的库,其字符集与应用程序中的字符集之间存在不匹配
2:Qt C and C++ compiler paths differ. C compiler may not work.解决方法
网上看了很多方法没解决
重新下载也不行,最后在c盘appdate里把qt的配置信息删除掉就行了
C:\Users\admin\AppData\Roaming\QtProject
Frame not in module:
LDMC.dll 没有被指定在widows上运行,或者它包含错误,
请偿试使用原始安装介质重新安安装程序,或联系你的系统管理员或软件供应商以获取支持,错误状态:0xc0000020
注:发生此种原因:工程是以release版本,结果用的是debug模式的lib和dll,导致此种错误
3: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease'
A definition for the symbol '' could not be located (vs2010)
在不打开任何解决方案的情况下,选择Tools -> Options -> Text Editor -> C/C++ -> Advanced,将'Recreate Database' 设置为'True'
is not a class or namespace name 解决方法
4: 在lib 动态库时会遇到,即要cpp文件加引入pch.h头文件
std::bind - error C2338: tuple index out of ...
此异常发生在std::bind 类的某个函数,但是这个函数又有多个同名的重载,就会发生此异常,
编译器无法准确推导绑定哪个,处理办法是将同名重载的函数全部改为不同名即可
C++ (std::min),std::max编译错误
解决办法:即将 std::min括起来是最好的办法,其余如 加NOMIN,NOMAX容易与VS系统编译器里的文件相冲突
1:mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0'
VS中的规则:debug模式下只能用debug模式编译生成的库,否则就会报错
2: unresolved external symbol wWinMainCRTStartup
在vs项目属性中,link---》comandline那里,去掉多加的项
有未经处理的异常: Microsoft C++ 异常: std::length_error
5:
gdipluspath throws ambiguous byte for cstddef and rpcndr.h
'byte': ambiguous symbol GdiplusPath.h
解决之法: 在预定义中加入: _HAS_STD_BYTE=0
6:__CxxFrameHandler4
__CXXFrameG...
此类错误,出现在vs2017的工程中有vs2019编译过的lib库,解决办法:即将lib库用vs2017编译一次即解决