有一份天龙八部的源码,由于太古老用vs2015打开编译时,报一大堆错误,只能一步一步修改,现将具体的修改步骤记录下,供自己回忆及有相同想法的朋友参考
编译已经通过,由于缺少配置文件及相关的资源,(等有了这些再看看是否正常运行)
下面将记录我的解决编译报错的相关步骤:
报错 error C2039: “max”: 不是“std”的成员
在对应的cpp文件下加入头文件 #include <algorithm>
error C2338: <hash_map> is deprecated and will be REMOVED.
解决方法:在预定义里定义"_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS "宏
#error: Macro definition of snprintf conflicts with Standard Library function declaration
OgrePlatform.h文件中注释掉
/*
#define snprintf _snprintf
//#define vsnprintf _vsnprintf
#if (_MSC_VER < 1500)
#define vsnprintf _vsnprintf
#endif
*/
uiiconsmng.cpp(67): error C2228: “.IsString”的左边必须有类/结构/联合
using namespace LuaPlus; LuaPlus::LuaStack
error LNK2026: 模块对于 SAFESEH 映像是不安全的
4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
WXLogicModelManager.cpp的1168行,改为
return AnimationSkeletonLinksIterator(AnimationSkeletonLinks::iterator(), AnimationSkeletonLinks::iterator());
OgreCEGUIRenderer.cpp的187行改为
d_quadIDMap.insert(std::make_pair(quad.id, (QuadInfo*)&(*it)));
rpc相关的问题
dx就是源码目录的DiretcX9目录下的
将dx的include 目录下的rpcsal.h文件删掉
//将下面两句的()去掉
stdafx.h文件下的
#define _WIN32_WINDOWS (0x0410) //Windows 98
#define _WIN32_WINNT (0x0500) //Windows 2000
error C3861: “SetFileAttributes”: 找不到标识符
在WXClient.cpp中加入
#include "c:\Program Files (x86)\Windows Kits\8.1\Include\um\fileapi.h"
error LNK2019: 无法解析的外部符号 __imp__vsprintf,该符号在函数 _FT_Message 中被引用
egacy_stdio_definitions.lib 在项目属性->链接器->输入里面加入库legacy_stdio_definitions.lib
还有一些.lib库找不到的问题是动态库工程的导入库路径或名称不对,改下就好
等出现上面的对话框后就表示已编译通过,下面就是要将配置文件和资源放到对应的目录下(这一步还要求对Ogre的资源和配置有些了解,可在网上了解到)
之后就是将配置文件放到exe输出目录
VS 设置调试目录和exe输出目录相同,以便调试(如果已经加载了WXRender.dll,可以在WXRender.log中文件中分析ogre的运行情况)
修改好的工程下载地址: