动态链接库的加载本节课程主要知识点动态链接库的加载动态链接库的静态加载动态链接库的动态加载重点和难点重点动态链接库的加载方法难点静态调用中建立关联动态链接库的加载动态链接库的加载动态链接库的加载分为即静态加载方式和动态加载方式
静态加载方式是在编译程序代码时即完成对DLL的加载,应用程序结束时卸载DLL
动态加载方式是使用用API函数来加载和卸载DLL的
动态链接库的静态加载动态链接库的静态加载静态加载方式由编译系统完成对DLL的加载
应用程序完成对DLL的卸载
加载方法简单,但不够灵活
LIB文件用来做什么
在生成一个DLL文件时,链接程序会自动生成一个与之对应的LIB文件
LIB文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码
编译应用程序把生成动态连接库时生成的LIB文件和DLL文件加入到应用程序的工程中
通过静态链接方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号进入到生成的EXE文件中
LIB文件作为DLL的替代文件被编译到应用程序工程中
DLL中函数的调用(1/2)当应用程序运行过程中需要加载DLL文件时,WindowsCE根据LIB中的信息发现并加载DLL
然后通过符号名或标识号实现对DLL函数的动态调用
DLL中函数的调用(2/2)所有被应用程序调用的DLL文件都会在应用程序EXE文件加载时被加载到内存中
可执行程序直接通过函数名调用DLL的输出函数,调用方法和程序内部其他的函数是一样的
DLL如何共享
DLL静态加载后,系统会建立对该DLL的调用记录
如还有其它程序使用该动态链接库,则WindowsCE对DLL的应用记录减1,直到所有相关程序都结束对该DLL的使用时才释放它
DLL静态加载实例利用VS2005生成动态链库wcedll