开源服务器框架NoahFrame分享 第二章:插件与模块

2017-10-31

return true;

}

virtual bool ReadyExecute()

{

return true;

}

virtual bool Execute()

{

return true;

}

};

这些函数被调用的顺序,和NFCPluginManager启动的时候调用的顺序是一样的,每一个继承NFIModule的类(Mudole),都是按照此顺序运行。

所有的Module类的载体都是插件(动态库),因此为了夸平台,首先NF对要加载的动态库作了一个抽象,用NFCDynLib类来表示(这里向Ogre的作者致敬,几乎纯抄他的),一个动态库就是一个NFCDynLib类对象。同时NFCPluginManager类用来管理所有加载的NFCDynLib类对象,它负责根据动态库文件名对相应的库进行加载,并保存加载后的NFCDynLib对象指针,对于不同平台的插件区分加载,也是这里实现的,代码大概如下:

class NFCDynLib

{

public:

NFCDynLib(const std::string& strName)

{

mbMain = false;

mstrName = strName;

#ifdef NF_DEBUG_MODE

mstrName.append("_d");

#endif

#if NF_PLATFORM == NF_PLATFORM_WIN

mstrName.append(".dll");

#else

mstrName.append(".so");

#endif

printf("LoadPlugin:%s\n", mstrName.c_str());

}

~NFCDynLib()

{

}

bool Load()

{

std::string strLibPath = "./";

strLibPath = mstrName;

mInst = (DYNLIB_HANDLE)DYNLIB_LOAD(strLibPath.c_str());

123456阅读全文

相关游戏

最新合集

相关文章

网友评论

    加载更多
    回复 [1楼 ]取消回复