|
发表于 2003-10-5 22:32:00
|
显示全部楼层
Re: why no CreateInterface() in engine.dll ?
我觉得在engine里是没有调用CreateInterface()的。
因为CreateInterface() 做的事情在luncher的LoadAppSystems()里面已经做了。
在src_main\public\interface.cpp里面定义了CreateInterface( const char *pName, int *pReturnCode ),这个函数主要功能是查找InterfaceReg链表里面特定名字的类厂指针(62行)。InterfaceReg是一个接口的链表,结构比较简单,同样定义在Interface.h里面,而且该类厂指针是由InterfaceReg的建构函数传入的,所以CreateInterface只不过是查找InterfaceReg链表获得接口指针的函数。
真正的接口创建是在FileSystem_LoadModule("xxx.dll");以后通过调用Sys_GetFactory(ModuleHandle)实现的。可以看看interface.cpp里Sys_GetFactory的定义,它返回的是一个CreateInterfaceFn的函数指针,其实就是模块DLL暴露的一个名为CreateInterface的函数,这个函数就是接口必须实现的,负责接口实例创建的函数。
(个人认为在这里Factory和Interface的概念有点混淆,不妥之处共同研究) |
|