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编译一次即解决