zelda

 

静态库,静态链接dll,动态加载dll,多态接口dll

其实这里面包含了2种情况, 一个是代码库的加载方式, 一个是接口的适配.

常见的代码库的加载方式有3种.
1. 静态库, 代码是通过机器码的形式硬链接到目标文件中, 里面只包括代码与全局/静态数据, 是最传统的形式, 每一处使用都包含完整的代码, 链接后不存在独立的代码形式, 是目标代码的一部分. 缺点是浪费内存.

2. 静态链接动态库, 是symbian最常用的形式, 每个dll是独立的代码段, lib文件包含dll中函数, 全局数据的链接, 定位信息, 在目标文件生成时, 编译器检查相关的api生成重定位表等, 在系统中, 所有的dll是一个独立的代码段, 被所有使用的进程共享. 目标exe执行时, 相关api的调用通过dll的重定位实现. 优点可以有效的节省内存.

3. 动态加载动态库, 通过RLibray加载, 目标exe需要明白该动态库执行接口的参数, 功能等, 优点是可以在运行时才根据需要加载动态库, 或者选择性的加载不同实现的动态库.

多态接口DLL只是说接口是纯虚函数, symbian dll的加载机制对dll里的纯虚函数做支持.

这个与静态链接动态库还是动态加载动态库无关, 2种方式都支持.

posted on 2010-09-24 17:45  zelda  阅读(710)  评论(0编辑  收藏  举报

导航