case
DLL_PROCESS_DETACH:
.......
}
return
TRUE;
}
参数中,hMoudle 是动态库被调用时所传递来的一个指向自己的句柄(实际上,它
是指向_DGROUP 段的一个选择符)
; ul_reason_for_call 是一个说明动态库被调原因的
标志,当进程或线程装入或卸载动态链接库的时候,操作系统调用入口函数,并说明动
态链接 库被调用的原因,它所有的可能值为: DLL_PROCESS_ATTACH: 进程被调用 、
DLL_THREAD_ATTACH: 线 程 被 调 用 、 DLL_PROCESS_DETACH: 进 程 被 停 止 、
DLL_THREAD_DETACH: 线程被停止;lpReserved 为保留参数。到此为止,DLL 的入
口函数已经写了,剩下部分的实现也不难,你可以在 DLL 工程中加入你所想要输出的函
数
或
变
量
了
。
我们已经知道 DLL 是包含若干个函数的库文件,应用程序使用 DLL 中的函数之前,
应该先导出这些函数,以便供给应用程序使用。要导出这些函数有两种方 法,一是在定
义函数时使用导出关键字_declspec(dllexport),另外一种方法是在创建 DLL 文件时使
用模块定义文件.Def
。需要读者注 意的是在使用第一种方法的时候,不能使用 DEF 文件。
下 面 通 过 两 个 例 子 来 说 明 如 何 使 用 这 两 种 方 法 创 建 DLL 文 件 。
1)使用导出函数关键字_declspec(dllexport)创建 MyDll.dll,该动态链接库中有
两个函数,分别用来实现得到两个数的最大和最小数。在 MyDll.h 和 MyDLL.cpp 文件中
分
别
输
入
如
下
原
代
码
:
//MyDLL.h
extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);
//MyDll.cpp
#include
#include"MyDll.h"
int
Max(int
a,
int
b)
{
if(a>=b)return
a;
else
return
b;
}
int
Min(int
a,
int
b)
{
if(a>=b)return
b;
else
return
a;
}