游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3928|回复: 3

why no CreateInterface() in engine.dll ?

[复制链接]

16

主题

76

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-10-5 16:52:00 | 显示全部楼层 |阅读模式
strange.
seems no CreateInterface() in engine.dll !!!
where is it ???

23

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 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的概念有点混淆,不妥之处共同研究)

16

主题

76

帖子

105

积分

注册会员

Rank: 2

积分
105
 楼主| 发表于 2003-10-6 00:15:00 | 显示全部楼层

Re:why no CreateInterface() in engine.dll ?

"模块DLL暴露的一个名为CreateInterface的函数"

super ft! 代?我也看得懂, 我就是指的???. 但是奇怪的是根本找不到.

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2003-10-6 11:25:00 | 显示全部楼层

Re:why no CreateInterface() in engine.dll ?

是不是都调用interface.cpp里的那个
void* CreateInterface( const char *pName, int *pReturnCode )
呀?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 07:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表