1625-5 王子昂 总结《2017年7月22日》 【连续第293天总结】
A. DLL基础
B.
DLL工作方式
构建DLL
头文件,其中包含待导出函数的原型、结构和符号的声明
C/C++源文件,其中包含待导出函数的实现和变量
编译器为每个C/C++源文件生成.obj文件
连接器将每个.obj模块合并,从而生成DLL
如果至少导出了一个函数/变量,那么连接器会同时生成.lib文件
构建EXE
头文件,其中包含待导出函数的原型、结构和符号的声明
C/C++源文件,其中包含待导出函数的实现和变量
编译器为每个C/C++源文件生成.obj文件
链接器将每个.obj模块合并,并使用.lib文件来解析对导入的函数/变量的引用,从而生成.exe(包含一个导入表,其中列出了必需的DLL和导入的符号)
运行应用程序
加载程序为.exe创建地址空间
加载程序将必需的DLL载入到地址空间中
进程的主线程开始执行,应用程序开始运行
构建DLL模块
在创建DLL的时候,事实上是创建了一组可供可执行模块(或其他DLL)调用的函数。
一个DLL可以导出变量、函数或C++类来供其他模块使用,但在实际开发中应避免导出变量和C++类
创建DLL时需要一个头文件包含想导出的变量和函数原型,并且定义用到的符号和数据结构;这个头文件需要分