- 5
- 0
- 约1.43万字
- 约 62页
- 2024-03-25 发布于江苏
- 举报
动态链接库DLL编程-PPT
精品
1.概论
Ø先来阐述一下DLL(Dynamic
Linkable
Library)的概念,你可以简单的把DLL看
成一种仓库,它提供给你一些可以直接
拿来用的变量、函数或类。
Ø在仓库的发展史上经历了“无库-静态链
接库-动态链接库”的时代。
Ø对动态链接库,需建立如下概念:
(1)与具体的编程语言及编译器无关
Ø
只要遵循约定的DLL接口规范和调用方
式,用各种语言编写的DLL都可以相互
调用。
Ø譬如Windows提供的系统DLL(其中包
括了Windows的API),在任何开发环境
中都能被调用,不在乎其是Visual
Basic、
Visual
C++还是Delphi。
(2)动态链接库随处可见
Ø在Windows目录下的system32文件夹中
会看到kernel32.dll、user32.dll和
gdi32.dll,windows的大多数API都包含
在这些DLL中。
ükernel32.dll中的函数主要处理内存管理和进
程调度;
üuser32.dll中的函数主要控制用户界面
(MessageBox函数);
ügdi32.dll中的函数则负责图形方面的操作。
(3)VC动态链接库的分类
ØVisual
C++支持三种DLL,它们分别是非MFC动
态库、MFC规则DLL、MFC
Extension
DLL。
ü非MFC动态库不采用MFC类库结构,其导出函
数为标准的C接口,能被非MFC或MFC编写的
应用程序所调用;
üMFC规则DLL包含一个继承自CWinApp的类,
但其无消息循环;
üMFC扩展DLL采用MFC的动态链接版本创建,
它只能被用MFC类库所编写的应用程序所调用。
2.静态链接库
Ø在VC++6.0中new一个名称为libTest的static
library工程,
并新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码
如下:
//文件:lib.h
#ifndef
LIB_H
#define
LIB_H
extern
C
int
add(int
x,int
y);//声明为C编译、连接方式
的外部函数
#endif
//文件:lib.cpp
#include
lib.h
int
add(int
x,int
y)
{
return
x
+
y;
}
#include
stdio.h
#include
..\lib.h
#pragma
comment(
lib,
..\\debug\\libTest.lib
)
//指定与静态库
一起连接
int
main(int
argc,
char*
argv[])
{
printf(
2
+
3
=
%d,
add(
2,
3
)
);
}
声明导出函数
ØDLL中导出函数的声明有两种方式:
Ø一种为给出的在函数声明中加上
__declspec(dllexport);
Ø一种方式是采用模块定义(.def)文件声明;
__declspec(dllexport)
Ø在DLL中想要export的函数和数据定义前
添加_declspec(dllexport)关键字(对
于函数和变量定义,加在最前面;对于
class定义,加在class关键字后);
ü__declspec(dllexport)voidShowDlg(void)
üclass_declspec(dllexport)class_name//导出类
Ø这样该函数和数据就会被添加到ET中。
使
您可能关注的文档
最近下载
- 丹__溪__翁__传.ppt VIP
- M200 高性能通用变频器.PDF VIP
- GKG-GSE-印刷机使用说明书.pdf VIP
- 25春新版一下语文课课贴6页.docx VIP
- 常微分方程(第四版)课件 王高雄 高等教育出版社 第四章 高阶微分方程(四).pptx VIP
- 常微分方程(第四版)课件 王高雄 高等教育出版社 第四章 高阶微分方程(三).pptx VIP
- 精品解析:2024年山东省济南市历城区一模化学试题(原卷版).docx VIP
- 汽车维修高级工考试试题及参考答案 .pdf VIP
- 探讨微短剧中的价值失范问题及其解决路径.docx VIP
- 13BJ2-12 建筑外保温(节能75).docx VIP
原创力文档

文档评论(0)