1.新建win32 Dynamic-Link Library 类型的工程,工程取名 MFCDll,按 下一步 ,直至结束
2.在MFCDll.cpp 代码末端 写函数
例如:_declspec(dllexport) int add(int a,int b) //例子来自 vc++深入了解 书中
{
return a+b;
}
_declspec(dllexport) 的作用是从Dll中导出的函数中,给每个函数添加标识符,可以不导出
3.在MFCDll.def 代码末端 写 add@1; 表示第一个函数是
4.利用Build命令生产Dll,之后再Debug目录下,可以看到MFCDll.dll文件
使用
一.隐式使用
1.引入库文件
复制MFCDll.dll到需要调用动态库的程序下面
2. external int add(int a,int b);//声明函数是外部定义
然后在函数中可以直接调用 MFCDll.dll 导出的add函数
void ------()
{
CString str;
str.Format("5+3=%d",add(5,3);
MessageBox(str);
}
二 显示使用
1.引入库文件
复制MFCDll.dll到需要调用动态库的程序下面
2.LoadLibrary()函数void-----()
{
hInst=LoadLibrary("MFCDll.dll");//加载动态库
typedef int(*ADDPROC)(int a,int b);//定义函数指针类型。其实ADDPROC是一个函数指针类型
ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"add");//获取DLL导出的函数,add是dll中你需要的函数名
if (!Add)//判断有没有得到导出函数add的地址
{
MessageBox("fail");
return;
}
CString str;
str.Format("5+3=%d",Add(5,3));
MessageBox(str);
}