1.1 创建dll项目
![](http://up.2cto.com/2012/0518/20120518111010502.png)
![](http://up.2cto.com/2012/0518/20120518111010784.png)
1.2 为dll项目编写源文件
![](http://up.2cto.com/2012/0518/20120518111011638.png)
头文件dllDemo.h
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数。
extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数
extern "C" _declspec(dllexport) int Min(int a, int b);//取较小值函数
源文件dllDemo.cpp
#include "dllDemo.h"extern "C" _declspec(dllexport)int Sum(int a, int b)
{return a+b;}
extern "C" _declspec(dllexport)int Max(int a, int b)
{
if(a>=b)
return a;
else
return b;
}
extern "C" _declspec(dllexport)int Min(int a, int b)
{
if(a>=b)
return b;
else
return a;
}
1.3 生成dll文件
编译源文件,如果没有出现错误提示,那么,在项目文件根目录的Debug文件夹内会生成
一个dll文件“dllDemo.dll”。
2 DLL调用
2.1 用C++调用显式链接
![](http://up.2cto.com/2012/0518/20120518111011372.jpg)
新建一个Win32的控制台程序进行显式调用:
2. 新建cpp文件“UseDll.cpp”
3. 将在第一节中,在Debug目录下编译生成的“dllDemo.dll”(显式调用时只需要这一
个文件就够了)文件复制到“UseDll”项目下的Debug文件夹根目录下
4. 在“UseDll.cpp”文件中编写以下代码对dll中的函数进行显式调用
代码:#include <iostream>
#include< windows .h>
using namespace std;
void main(void)
{
typedef int(*pMax)(int a,int b);
typedef int(*pMin)(int a,int b);
pMax Max=NULL;
pMin Min=NULL;
HINSTANCE hDLL;
hDLL=LoadLibrary("dllDemo.dll");//加载动态链接库dllDemo.dll文件;
Max=(pMax)GetProcAddress(hDLL,"Max");
Min=(pMin)GetProcAddress(hDLL,"Min");
if (Max)//如果取出函数成功,则执行下面的语句
{
int A=Max(5,8);
cout<<"比较的结果为"<<A<<endl;
}
if (Min)
{
int B=Min(5,8);
cout<<"比较的结果为"<<B<<endl;
}
FreeLibrary(hDLL);//卸载MyDll.dll文件
}
5、运行效果如下:
原网站上的文章里面代码有点小小的错误,在这里我已经修改好了。可能还存在不足之处,望多包涵!
//
转载:http://www.2cto.com/kf/201205/132151.html