Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293726
  • 博文数量: 748
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 8270
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-12 17:57
文章分类

全部博文(748)

文章存档

2010年(748)

我的朋友

分类:

2010-11-03 12:36:38

  symbian 中也有类似windows com的机制,用来作为二进制的模块间接口标准。   ecom比起windows com来要简单得多,没有guid 没有iunknown,没有marshal,没有其他好多东西。。。   那么,,,还剩下什么呢?逐个说一下   首先 和com一样你的dll要注册,这样别人才能找到你,不同的是,不是注册到注册表,dll也没有引出注   册反注册的函数(没有类似dllregisterserver and dllunregisterserver的东西),而是写一个rss文件,   里面写上你的ecom的注册信息,这个rss文件编译后生成rsc文件,放到系统的ecom插件注册目录下,这样   系统就可以通过这个文件中的信息找到你的ecom dll.这个rss不难写,基本上抄一个改个id就好了。   唯一要注意的是,rss编译后产生的rsc文件名要和dll文件名一样。   *注意: 这里的rss和blog那个rss不是一个概念,symbian 里面的资源文件的展名就是rss。   然后,你的dll必须实现一个引出函数   export_c const timplementationproxy* implementationgroupproxy(tint& atablecount);   这是必须的,这个函数返回一个结构数组,描述了这个dll所包含的所有对象的id 和 工厂函数的指针。   通常这个函数是返回一个dll里的全局变量比如: const timplementationproxy implementationtable["> =   {   implementation_proxy_entry(0x13457890, cfoo::newl)   };   cfoo::newl会返回一个,cfoo*,而cfoo一定是实现了 id 0x13457890 对应的接口。   就是这么简单,和windows的com比起来非常原始,但是ecom在symbian 和 s60里面应用非常广泛。   因为手机系统需要极强的定制能力,大多数功能都是靠ecom实现的,不同版本的差异很多是靠发行   的时候采用不同的ecom来做的。ecom的dll在制作成手机的rom的时候和其他一般的dll是有些不   一样的,ecom会拥有一个单独的区域,并且编制索引来保证ecom的加载会比其他dll要快一些。   所以有些时候会把一些数据文件做成ecom,就是因为加载比较快。 如果喜欢理解 symbian 中的 ecom - symbian请收藏或告诉您的好朋友.
阅读(201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~