1. DLL与数据共享
DLL 可以拥有自己的数据段,但没有自己的堆栈,而是使用应用程序(EXE文件)的堆栈
1.1 DLL的结构
每个DLL文件都包含一个到处函数表,这些导出函数由他们的函数名或函数编号与外界联系起来,函数表中还包含了DLL中函数的地址。当程序加载DLL模块时,应用程序并不知道在DLL中调用函数的实际地址,只知道函数的名字或编号,系统在加载DLL模块时动态建立一个函数与函数地址的对应表,如果重新编译或重建DLL文件,并不需要修改应用程序,除非改变了导出函数的名字或编号。简单的DLL文件只为应用程序提供导出函数,比较复杂的DLL文件除了提供导出函数以外,它本身还调用其他DLL文件中的函数。这样,一个特殊的DLL可以既有引入函数,又有导出函数,这并不会造成任何问题,因为动态链接过程可以处理交叉引用的情况。
1.2 链接方式