《VC++深入详解》第19章 动态链接库
动态链接库程序的编写。静态库与动态库的区别,以及调用程序在链接静态库和动态库时的区别。如何利用工具查看动态链接库输出的函数,Depends工具的使用,C++编译器名字改编技术对动态链接库输出函数的影响,extern "C"的用法,利用模块定义文件来解决C++名字改编的问题。用typedef定义指向函数的指针类型,如何获得动态连接库里的函数的指针。 《VC++深入详解》第19章主要探讨的是动态链接库(DLL)的使用和创建,这是Windows操作系统中不可或缺的一部分。动态链接库不同于静态库,它不直接运行,而是通过其他程序调用其函数来执行特定任务。动态链接库分为静态库(.lib文件)和动态库(.dll文件),在程序编译时,静态库的函数会被合并到可执行文件中,而动态库的函数则在程序运行时加载。 动态链接库的主要好处包括:跨语言编程、增强功能、提供二次开发平台、简化项目管理、节省磁盘和内存空间、资源共享以及实现应用程序本地化。Windows API的核心函数大多位于Kernel32.dll、User32.dll和GDI32.dll等DLL中。 创建和使用Win32 DLL涉及到几个关键步骤,包括使用Dumpbin命令查看DLL导出的函数、通过_declspec(dllimport)或declspec(dllexport)关键字导出和导入函数,以及extern声明外部函数。Depends工具是检查DLL依赖关系的重要工具,它可以帮助开发者查看哪些DLL被其他程序所依赖。 对于C++编程,由于名字改编问题,需要extern "C"来保持函数名不变,以便于C++和其他语言之间的调用。但extern "C"无法应用于导出C++类的成员函数,这时就需要模块定义文件(.def文件)来解决命名问题。通过typedef定义指向函数的指针类型,可以更方便地获取和使用DLL中的函数。 动态链接库有两种加载方式:隐式链接和显式链接。隐式链接是通过编译时链接引入库来完成,而显式链接则是在程序运行时使用LoadLibrary和GetProcAddress函数动态加载和调用DLL中的函数。DLLMain函数是DLL的入口点,用于初始化和清理操作。 MFC(Microsoft Foundation Classes)DLL的使用提供了更高级别的抽象,使得在VC++中处理DLL更为便捷。本章详细讲解了VC++中动态链接库的各个方面,包括创建、使用、调试和优化,为开发者提供了全面的指导。理解和掌握这些知识对于开发高效、灵活的Windows应用程序至关重要。
- lgylgylgy1262015-03-19vc++深入详解书籍部分内容
- 粉丝: 1
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 打造最强的Java安全研究与安全开发面试题库,帮助师傅们找到满意的工作.zip
- (源码)基于Spark的实时用户行为分析系统.zip
- (源码)基于Spring Boot和Vue的个人博客后台管理系统.zip
- 将流行的 ruby faker gem 引入 Java.zip
- (源码)基于C#和ArcGIS Engine的房屋管理系统.zip
- (源码)基于C语言的Haribote操作系统项目.zip
- (源码)基于Spring Boot框架的秒杀系统.zip
- (源码)基于Qt框架的待办事项管理系统.zip
- 将 Java 8 的 lambda 表达式反向移植到 Java 7、6 和 5.zip
- (源码)基于JavaWeb的学生管理系统.zip