2011年5月27日

动态链接库学习(四)

摘要: Win16 DLL与Win32 DLL之间的区别如果您已为 Windows 3.x 生成了 16 位 DLL,应发现生成 32 位 DLL 更为方便。编译器提供了更直接的支持,它可以省去 DLL 创建过程中的若干步骤。Win16 DLL 和 Win32 DLL 之间的具体差异包括:没有必须要链接的单独的启动模块。DLL 启动序列直接由链接到 DLL 中的 C/C++ 运行时库代码处理。运行时库代码通过调用适当的构造函数初始化任何静态非本地 C++ 对象。每个进程均获取自己的所有 DLL 静态数据(包括对象)的副本。不再需要 LibMain 或 WEP 函数(Windows 退出过程)。在何处为 阅读全文

posted @ 2011-05-27 16:37 ActiveChange 阅读(126) 评论(0) 推荐(0) 编辑

动态链接库学习(三)

摘要: 动态链接具有下列优点:节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。升级到 DLL 更为容易。当 DLL 中的函数发生更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。提供售后支持。例如,可修改显示器驱动程序 DLL 以 阅读全文

posted @ 2011-05-27 16:27 ActiveChange 阅读(163) 评论(0) 推荐(0) 编辑

动态链接库学习(二)

摘要: 尽管 DLL 和应用程序都是可执行的程序模块,但它们之间有若干不同之处。对于最终用户来说,最明显的差异在于 DLL 不是可直接执行的程序。从系统角度讲,应用程序和 DLL 之间有两个基本差异: 应用程序可有多个同时在系统上运行的实例,而 DLL 只能有一个实例。应用程序可以拥有堆栈、共用内存、文件句柄、消息队列这样的事物,而 DLL 不能。 阅读全文

posted @ 2011-05-27 16:23 ActiveChange 阅读(107) 评论(0) 推荐(0) 编辑

动态链接库学习(一)

摘要: 动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 的内容。动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。使用动态链接代替静态链接有若干优点。DLL 节省内存 阅读全文

posted @ 2011-05-27 16:22 ActiveChange 阅读(129) 评论(0) 推荐(0) 编辑

导航