P509 Windows应用程序编程接口(application programming interface,API)提供的所有函数都包含在DLL中。其中三个最重要的DLL分别是:Kernel32.dll,包含的函数用来管理内存、进程及线程;User32.dll,包含的函数用来执行与用户界面相关的任务,如创建窗口和发送消息;GDI32.dll,包含的函数用来绘制图像和显示文字。
P510 在创建DLL的时候,我们必须给链接器指定/DLL开关。
在应用程序(或其他DLL)能够调用一个DLL中的函数之前,必须将该DLL的文件映像映射到调用进程的地址空间中。我们可以通过两种方法来达到这一目的:隐式载入时链接(implicit load-time linking)或显式运行时链接(explicit run-time linking)。
P511 当一个模块提供一个内存分配函数的时候,它必须同时提供另一个用来释放内存的函数。
P513 如果链接器检测到DLL的源文件输出了至少一个函数或变量,那么链接器还会生出一个.lib文件。这个.lib文件非常小,这是因为它并不包含任何函数或变量。它只是列出了所有被导出的函数和变量的符号名。为了构建可执行模块,这个文件是必需的。
P523 为了减少应用程序的载入时间,我们应该对自己的可执行模块和DLL模块进行基地址重定位和绑定。
P510 在创建DLL的时候,我们必须给链接器指定/DLL开关。
在应用程序(或其他DLL)能够调用一个DLL中的函数之前,必须将该DLL的文件映像映射到调用进程的地址空间中。我们可以通过两种方法来达到这一目的:隐式载入时链接(implicit load-time linking)或显式运行时链接(explicit run-time linking)。
P511 当一个模块提供一个内存分配函数的时候,它必须同时提供另一个用来释放内存的函数。
P513 如果链接器检测到DLL的源文件输出了至少一个函数或变量,那么链接器还会生出一个.lib文件。这个.lib文件非常小,这是因为它并不包含任何函数或变量。它只是列出了所有被导出的函数和变量的符号名。为了构建可执行模块,这个文件是必需的。
P523 为了减少应用程序的载入时间,我们应该对自己的可执行模块和DLL模块进行基地址重定位和绑定。