1.首先要生成一个功能简单的dll库,先新建项目–>win 32项目(比如命名为CDLL)–>dll(选中空项目)–>完成。
2.新建一个头文件,命名为dllgenerator.h,完成如下代码:
#ifndef __CDLL_H__
#define __CDLL_H__
extern "C" int _declspec(dllexport) add(int x, int y);
#endif
注:add(int x,int y)函数作为练习来使用,我们也可以用其他函数来代替,还有一个“int”是返回值类型。extern “C”是为了防止生成的dll代码在其他编译器使用时可能会被改变,其函数可能也会发生变化。
3.新建一个源文件,命名为dllgenerator.cpp(与之前的头文件名称须相同),完成如下代码:
#include "dllgenerator.h"
int add(int x, int y)
{
return x + y;
}
此时,点击运行,在debug文件夹中则能找到生成的CDLL.dll文件。至此生成dll文件完成,接下来就是如何调用dll库的问题了。
4.新建一个项目–>MFC应用程序(在此命名为Testadd)–>选择对话框–>完成。记得将CDLL.dll库文件导入到项目中(具体做法为右键项目,选择添加–>现有项,找到库文件,添加),接下来在对话框中加入一个编辑框和一个按钮(注意编辑框的ID我设置为了IDC_STATIC),给按钮添加事件处理程序,函数名随便写,好记就行,也可以就按程序给我们定义好了的函数名,然后在事件处理程序中完成如下代码:
typedef int(*lpAddFun)(int,int); //宏定义函数指针类型
HINSTANCE hDll; //DLL句柄
lpAddFun addFun; //函数指针
hDll = LoadLibrary(_T("CDLL.dll"));
int result=0;//将函数返回的值赋给它,这里先初始化
CString str;
if (hDll != NULL)
{
addFun = (lpAddFun)GetProcAddress(hDll, "add");/*用addFun取代dll库中的add函数*/
if (addFun != NULL)
{
result = addFun(2, 3);//这里是将整型2和整型3作为参数传进去
str.Format(_T("%d"),result);
SetDlgItemText(IDC_STATIC,str);
UpdateData(false);
}
FreeLibrary(hDll);
}
(注:若小伙伴对传进去的参数不太满意,可以添加两个编辑框控件,可随意设置也行。)
5.最后别忘了将CDLL.dll文件放到Testadd.exe文件所在的Debug文件夹中,这时点击运行,出来一个对话框,单击新添的按钮,编辑框会显示2+3之后的数据,即5,说明调用dll库文件成功。
希望对阅读这篇文章的小伙伴有些许帮助哦!!!