DEF与Dll构建
来源:百度文库 编辑:神马文学网 时间:2024/04/25 17:55:54
Symbian中dll必须有一个同名的lib(导入库),才能使得其他程序使用dll中的方法。 在一个项目的mmp中通过LIBRARY行,实现了程序和lib的静态链接。程序运行时根据LIB中的信息,才能找到dll中正确的代码段,执行这段代码。 LIB是根据DEF文件生成的,所以DEF文件是生成lib文件的依据。 通过命令abld freeze启动接口冻结时,会生成DEF文件。DEF中的信息来源于Dll,记录了Dll中被导出的函数的信息。在编译Dll时,每个导出函数都被分配了一个唯一序号,记录在DEF中,这些信息会被送进lib中,用于运行时找到dll中的函数。、 所以依赖关系是这样的 依赖 <------------------------------------------- DLL <--- DEF <--- LIB <--- 外部使用DLL 完成的Dll生成步骤为1. 在mmp中定义生成的def文件的位置和名称 #if defined(WINS)
deffile .\TestDllwinscw.def
#else if defined(ARM)
deffile .\TestDllARM.def
#endif 不是必须的,如果没有,def默认的文件名为U.def2. 编译生成Dll abld build winscw udeb3. 启动冻结接口,生成def abld freeze winscw udeb4. 再次编译Dll,此时因为def已经存在,生成dll,同时根据def生成lib 启动冻结接口,生成DEF后,再次编译Dll时,导出函数接口上的变化不会更新到DEF中,因为DEF认为冻结后的接口不会再变。所以导出函数的接口发生变化时,需要重新生成lib,那么就要解冻接口。 解冻接口的办法比较傻瓜,就是直接把def删了。再按照上述步骤重新编译一遍。 如果Dll已经发布,正在被应用程序使用,这样更新Dll和lib会使你挨一顿骂。因为重新生成DEF,可能会使原先被分配给每个函数的序号发生变化,对于依赖于之前版本的应用程序将无法运行。对于这个,我也只有笨办法,将原来的def备份,然后生成新的def,自己将变化的信息合到原来的def中,保持原来的序号不变,对于新增加的函数,自己给一个序号,也只有这样了。
deffile .\TestDllwinscw.def
#else if defined(ARM)
deffile .\TestDllARM.def
#endif 不是必须的,如果没有,def默认的文件名为
DEF与Dll构建
使用 DEF 文件从 DLL 导出
请问DLL 的 DEF文件有什么作用?
请问DLL 的 DEF文件有什么作用?
VS中def文件对于生成dll和lib文件的作用 - caomiao2006的专栏 - CSDN博客
DLL
动态嵌入式DLL木马发现与清除
动态链接库文件与dll是什么意思?
VC++中(.def) 文件
全球化与构建和谐社会
信息构建与知识构建的异同
信息构建与知识构建异同
高手讲解comres.dll是什么,ComRes.dll文件下载与修复
“构建和谐社会”与阶级斗争理论
道德的构建与稳固
女性人才培养与构建和谐社会
AppDomain加载与释放dll - kevin-Y - 博客园
从流氓软件说说DLL动态插入技术与Rootkit技术
信息构建(IA)与知识构建的异同
网络新闻传播结构的构建与分析
道德的构建与稳固1
道德的构建与稳固a
吴建民谈国际关系与构建和谐世界发布会
试论科学发展观与构建和谐社会