VC++ 版本升级常见错误一句集。
很多程序源码从低VC版本到高VC版本就发现不能编译,现在说一下常见问题。
warning C4838: 从“unsigned int”转换到“INT”需要收缩转换。
这是因为 int 整形变量在不同的机器上长度不一样,而VC系统又会自动识别和补充类型定义,如果数据数值 不大,可以忽视。
1>c:\users\pierre\desktop\d3d11codeset\common\d3dutil.h(78): error C2065: “D3DX11_FILTER_LINEAR”: 未声明的标识符
未声明的标识符,这个问题,从低版本VC到高版本VC出现的问题,是VC的SDK扩展包的版本和VC头文件常量定义不一样,未声明是新版VCd头文件没定义这个值 。
1>c:\users\pierre\desktop\d3d11codeset\common\d3dutil.h(88): error C2143: 语法错误: 缺少“;”(在“std::wstring”的前面)
这个缺少;是结构或变量前有 类似于 __m128 _float 等变量限定义不存在,老版本VC如果不存在这值 将忽视编译通过。
版本不同,那一个结构可能多一个变量,少一个变量。而这些结构又在VC的默认文件头里。
有的SDK包的包含文件已经在windows SDK 里面 如naxmath.h 在 win sdk 目录um 中名为 directxmath.h 不过版本要配套。
如果是win10+DX11SDK 链接有错误 如 __vsnwprintf_s 错误时可以在依赖库中加入legacy_stdio_definitions.lib 这个库
如果是宏定义重复,宏的参数一样可以不管它,一定要比较宏定义的值。
待... ...