[网狐]内核引擎KernelEngine移植

编程入门 行业动态 更新时间:2024-10-07 12:17:51

[网狐]<a href=https://www.elefans.com/category/jswz/34/1769575.html style=内核引擎KernelEngine移植"/>

[网狐]内核引擎KernelEngine移植

没有KernelEngine内核源码?

最近跳槽了,现在这家公司用网狐服务器开发的项目,网狐老夫熟悉啊,以前研究过代码,所以工作上手很快,但是很快问题来了,KernelEngine这个Dll居然没.源.码,来让你们也感受一下.

最后逼的我都要看汇编了,奈何看不懂.
好啦以上是我的心路崩溃历程,最后决定移植其他有源码项目到本项目里,没想到成功了,这就是这篇文章的由来.

开搞

1.新建个文件夹,复制源码工程KernelEngine.vcproj文件到这个文件夹里

2.我们肯定要弄个新名字不和原来的工程名冲突,类名也要统一改.
我们把新复制过来的KernelEngine.vcproj改成KernelEngineEx.vcproj 以后所有用到的类后面都加上Ex和原工程区分开来.
3.用文本编辑器,打开KernelEngineEx.vcproj 全局替换,KernelEngine全部替换为KernelEngineEx.我用的是notepad++

4.VC打开工程把文件都清理干净,工程名改成新内核引擎

5.这里有个宏需要添加一下DECLARE_MODULE_HELPER_EX
……\系统模块\全局定义\Module.h

//组件辅助类宏
#define DECLARE_MODULE_HELPER_EX(OBJECT_NAME,MODULE_DLL_NAME,CREATE_FUNCTION_NAME)                              \
class C##OBJECT_NAME##ExHelper : public CTempldateHelper<I##OBJECT_NAME>                            \
{                                                                                                           \
public:                                                                                                     \C##OBJECT_NAME##ExHelper() : CTempldateHelper<I##OBJECT_NAME>(IID_I##OBJECT_NAME,                           \VER_I##OBJECT_NAME,MODULE_DLL_NAME,CREATE_FUNCTION_NAME) { }                                        \
};

6.创建KernelEngineHeadEx.h头文件

#pragma once//导出定义
#ifndef KERNEL_ENGINE_CLASSEx
#ifdef  KERNEL_ENGINE_DLLEx
#define KERNEL_ENGINE_CLASSEx _declspec(dllexport)
#else
#define KERNEL_ENGINE_CLASSEx _declspec(dllimport)
#endif
#endif//模块定义
#ifndef _DEBUG
#define KERNEL_ENGINE_DLL_NAMEEx  TEXT("KernelEngineEx.dll")      //组件 DLL 名字
#else
#define KERNEL_ENGINE_DLL_NAMEEx  TEXT("KernelEngineExD.dll")     //组件 DLL 名字
#endifDECLARE_MODULE_HELPER_EX(DataBase,KERNEL_ENGINE_DLL_NAMEEx,"CreateDataBaseEx")
DECLARE_MODULE_HELPER_EX(TimerEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateTimerEngineEx")
DECLARE_MODULE_HELPER_EX(DataBaseEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateDataBaseEngineEx")
DECLARE_MODULE_HELPER_EX(AttemperEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateAttemperEngineEx")
DECLARE_MODULE_HELPER_EX(TCPSocketService,KERNEL_ENGINE_DLL_NAMEEx,"CreateTCPSocketServiceEx")
DECLARE_MODULE_HELPER_EX(WEBSocketService,KERNEL_ENGINE_DLL_NAMEEx,"CreateWEBSocketServiceEx")
DECLARE_MODULE_HELPER_EX(TCPNetworkEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateTCPNetworkEngineEx")
DECLARE_MODULE_HELPER_EX(UDPNetworkEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateUDPNetworkEngineEx")
DECLARE_MODULE_HELPER_EX(AsynchronismEngine,KERNEL_ENGINE_DLL_NAMEEx,"CreateAsynchronismEngineEx")
DECLARE_MODULE_HELPER_EX(TraceServiceManager,KERNEL_ENGINE_DLL_NAMEEx,"CreateTraceServiceManagerEx")

7.在stdafx.h 引用原工程KernelEngineHead.h

#include "..\..\服务器组件\内核引擎\KernelEngineHead.h"

8.修改预处理器添加KERNEL_ENGINE_DLLEx 宏定义

9.拷贝文件并添加入工程并且改名

10.把所有类名都修改了,后面加上Ex


11.新建两个def文件

KernelEngineEx.def

; KernelEngineEx.def : 声明 DLL 的模块参数。LIBRARY      "KernelEngineEx"EXPORTS; 此处可以是显式导出

KernelEngineExD.def

; KernelEngineExD.def : 声明 DLL 的模块参数。LIBRARY      "KernelEngineExD"EXPORTS; 此处可以是显式导出

好啦,编译成功了,因为是复制没有源码的工程文件KernelEngineEx.vcproj 设置,输出路径肯定是你工程里的,还有一点是,你现在没有源码的工程没被其他人加工过,如果我提供的带源码的工程和你的工程函数不一样那就没办法了.

工程弄好了,我们应用一下,看下效果
1.把新的工程添加到项目里

2.游戏服务器stdafx.h里添加新的工程导入lib

#include "..\..\服务器组件\新内核引擎\KernelEngineHeadEx.h"//链接代码#ifndef _DEBUG
#ifndef _UNICODE#pragma comment (lib,"../../链接库/Ansi/KernelEngineEx.lib")
#else#pragma comment (lib,"../../链接库/Unicode/KernelEngineEx.lib")
#endif
#else
#ifndef _UNICODE#pragma comment (lib,"../../链接库/Ansi/KernelEngineExD.lib")
#else#pragma comment (lib,"../../链接库/Unicode/KernelEngineExD.lib")
#endif

3.找到ServieUnits.h 把原来的类声明改成我们加入的新的类

CTimerEngineExHelper                m_TimerEngine;                      
CAttemperEngineExHelper         m_AttemperEngine;   

4.好了大功告成.F5跑一下看看.

写在最后

网狐在网上流出的版本太多了,如果我提供的源码工程和你现在用的工程不匹配,那你就只能多找几个版本了.

可能有的朋友要问了,为啥不用带源码的项目开发啊,非要费劲的移植啊,我只能呵呵,公司这个项目开发好久了,不是说换其他版本框架就换的,毕竟现在的版本很稳定,已经趟过好多坑了.

好啦,这里提供我找的源码工程和移植的工程.所以这些移植只是可以让你调试你的程序,找到崩溃的地方,项目还是要用公司原来的不带源码的工程跑.

希望这篇文章能帮助到你

源码下载地址

更多推荐

[网狐]内核引擎KernelEngine移植

本文发布于:2024-02-28 04:03:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768113.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内核   引擎   网狐   KernelEngine

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!