动态连接库编程.ppt
《动态连接库编程.ppt》由会员分享,可在线阅读,更多相关《动态连接库编程.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Windows编程实践 动态链接库动态链接库库n静态链接库n动态链接库静态链接库动态链接库库LIBDLL静态链接库n例题:建立并使用一个静态链接库n步骤1.VC6中建立一个工程工程类型:nVC+6.0中new一个名称为libTest的static library工程 加入两个文件n/文件:lib.h#ifndef LIB_H#define LIB_Hextern C int add(int x,int y);/声明为C编译、连接方式的外部函数#endif/文件:lib.cpp#include lib.hint add(int x,int y)return x+y;编译与应用n在Debug目录下
2、有个后缀名为.lib的文件n应用要点:n需要包含.h文件n需要链入.lib文件:两种方法n1.#pragma comment(lib,.debuglibTest.lib)n2.Project-Setting中设置什么是库n库不是个怪物,编写库的程序和编写一般的程序区别不大,只是库不能单独执行;n库提供一些可以给别的程序调用的函数等,别的程序要调用它必须以某种方式指明它要调用之。n动态链接库与静态链接库在编写和调用上的不同体现在库的外部接口定义及调用方式略有差异。动态链接库 n动态链接库DLL简介n简单DLL的开发nDLL的使用nMFC DLL的开发动态链接库(DLL)简介什么是动态链接库(1)
3、n动态链接库(Dynamic Link Library)是Windows的重要组成部分n之前学习的windows可执行程序都是exe程序,但Windows系统中动态链接库是数量最多的可执行程序nKERNEL32.DLL、USER32.DLL和GDI32.DLL、各种驱动程序文件如KEYBOARD.DRV、SYSTEM.DRV和MOUSE.DRV和显卡及打印机驱动程序都是动态链接库n动态链接库是其它应用程序在执行时能够动态链接和调用的一组服务或函数n可以利用Visual Studio自带的Depends.exe工具来查看与应用程序关联的所有DLL文件什么是动态链接库(2)n在程序开发中,将各种目
4、标模块(.OBJ)、执行时期链接库(.LIB)文件,以及经常是已编译的资源(.RES)文件连结在一起,以便建立Windows的.EXE文件,称为“静态链接”n“动态链接”是指Windows程序把一个模块中的函数调用链接到动态链接库模块中的实际函数上n动态链接与静态链接的区别:动态链接是在程序运行时完成,静态链接在编译时完成n动态链接库是一种能够实现动态链接的技术函数模块函数模块Windows程序程序静态链接静态链接动态链接动态链接Windows程序程序函数模块函数模块动态链接库动态链接库动态链接库的意义n使用动态链接产生的exe文件比静态链接产生的exe文件小得多n使用动态链接的程序比相应静态
5、链接程序具有更优化的内存使用n可以实现函数模块的二进制重用,多个应用程序可以共享动态链接库,动态链接库也可以调用其它动态链接库n在程序开发时函数模块可以独立开发n通过替换动态链接库,可以实现应用程序功能的升级共享动态链接库Windows程序程序B函数模块函数模块动态链接库动态链接库Windows程序程序A动态链接库动态链接库B函数模块函数模块动态链接库动态链接库动态链接库动态链接库A利用动态链接库实现软件升级Windows程序程序函数模块函数模块动态链接库动态链接库V1.0函数模块函数模块动态链接库动态链接库V2.0覆盖覆盖升级之后升级之后升级之前升级之前简单DLL的开发基本步骤n建立DLL工
6、程n编写函数模块n产生动态链接库程序n在其它项目中使用动态链接库分类n普通的Win32的DLLn直接用C、C+编写,不适用于MFC类n基于MFC的DLLn应用MFC类库编写建立DLL工程n新建项目时选择DLL程序DllMainn工程建好之后,默认代码如下:BOOL WINAPI DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)return TRUE;DllMain的作用nDllMain是动态链接库的执行入口,第一次执行dll时被调用nDllMain主要用于dll调用时初始化,以及dll退出时的清理工作n例如:
7、在dll调用时初始化一些全局变量,在dll退出时销毁这些全局变量n通常情况下可以不编写DllMain编写函数模块(1)n为一个函数加上extern“C”_declspec(dllexport)就可以将函数导出为dll函数模块n例如:extern C _declspec(dllexport)int add(int a,int b)return a+b;extern C _declspec(dllexport)void message(LPCTSTR text)MessageBox(NULL,text,TEXT(消息),MB_OK);编写函数模块(2)n如果使用C语言编写DLL,可以将extern
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 连接 编程
限制150内