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