动态链接库DLL编程-PPT精品.pdfVIP

  • 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中。

使

文档评论(0)

1亿VIP精品文档

相关文档