1.error C3163: “_vsnprintf”: 属性与以前的声明不一致
在OgrePlatform.h里面用下面相应的覆盖
#if defined( __MINGW32__ )
#define EXT_HASH
#else
#if _MSC_VER < 1500
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#endif
#endif
2.编译 CEGUIOgreRenderer 时的错误
-à
error C2440: “初始化”: 无法从“const CEGUI::OgreCEGUIRenderer::QuadInfo *”转换为“CEGUI::OgreCEGUIRenderer::QuadInfo *”
原因是,方法需要传入的是一般的对象指针,而实际上可能会传入一个产量指针,会导致一个预期错误
多方查询后无果,对在这下方的第二天消息做处理
error C2439: “std::_Pair_base<_Ty1,_Ty2>::second”
问google后,得知是原因大部分是std库升级后,不能再使用NULL表示空指针,而必须用nullptr 。结合上面的错误,找到和 QuadInfo* 相关的std类型,并在OgreCEGUIRenderer.cpp的172行,把一个插入数据的方法做改造,传入了产量参数:
之前的是:
CEGUISystem 报没有找到 lua 对象的错误
error C2065: “LuaStack”: 未声明的标识符
error C2065: “LuaObject”: 未声明的标识符
看提示应该是 lua 的头文件 没有包含进去 ,但实际情况是已经包含。多方尝试,最终仅仅是因为 没有 定义命名空间而导致找不到对应类型。为啥之前的vc2008不报这样的错⊙﹏⊙b汗。
3.error C1012: 不匹配的括号 : 缺少“)” C:/Program Files/Microsoft SDKs/Windows/v7.0A/include/sdkddkver.h 246
错误的地方时一个宏定义:
警告 11 warning C4005: “NTDDI_VERSION”: 宏重定义 c:/program files/microsoft sdks/windows/v6.0a/include/sdkddkver.h 206上面的意思是如果 NTDDI_VERSION 没有定义过,并且定义过_WIN32_WINNT则按照某个宏来定义,否则给了一个产量。但是这个宏定义在定义里有又多层嵌套,从而导致上面的变异错误。在没有搞清楚是否因为操作导致宏失效的情况下,直接用常量替换上面的宏定义
错误的地方时一个宏定义:
#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// set NTDDI_VERSION based on _WIN32_WINNT
#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
#else
#define NTDDI_VERSION 0x06010000
#endif
#endif
上面的意思是如果 NTDDI_VERSION 没有定义过,并且定义过_WIN32_WINNT则按照某个宏来定义,否则给了一个产量。但是这个宏定义在定义里有又多层嵌套,从而导致上面的变异错误。在没有搞清楚是否因为操作导致宏失效的情况下,直接用常量替换上面的宏定义
4. CEGUISystem 报没有找到 lua 对象的错误
error C2065: “LuaStack”: 未声明的标识符
error C2065: “LuaObject”: 未声明的标识符
看提示应该是 lua 的头文件 ,没有包含进去 ,但实际情况是已经包含。多方尝试,最终仅仅是因为 没有 定义命名空间而导致找不到对应类型。为啥之前的vc2008不报这样的错⊙﹏⊙b汗。