1、创建dll:
在.cpp头部加上如下语句:#define DLLEXPORT __declspec(dllexport)
2、实现函数:DLLEXPORT int Add(int first,int second)
{ return (first+second); }
3、 使用Dll:在要使用该dll中函数的头文件中加入:
#define DLLIMPORT __declspec(dllimport)
#pragma comment(lib,"cal.lib")
DLLIMPORT int Add(int first,int second);
4、 如果使用了新建头文件,则包含该头文件再引用dll中的函数。
二、导出class的DLL
1、 在要导出的dll中,右键点击ClassView的根目录->New Class->Generic,添加一新类CRectArea
2、 在新添加类头文件中加入:#define DLLEXPORT __declspec(dllexport)
3、 在类前加入DLLEXPORT:class DLLEXPORT CRectArea{…};
4、 加入实现函数
5、 在.exe中,在要调用dll中函数的类前加入#define DLLIMPORT __declspec(dllimport)、#pragma comment(lib,”Calc.lib”)及#include “RectArea.h”
6、 将RectArea.h 及.dll、.lib copy到当前.exe目录下,将.h添加到工程中
7、 在头文件中声明变量:CRectArea m_RectArea;
8、 调用Dll中类的函数
三、通过.DEF文件创建Dll
1、在Dll的CXXXApp头文件中添加函数声明:int Mul(int,int); double Div(double,double);
2、在.cpp中实现之:int Mul(int a,int b) { return a*b;}
double Div(double a,double b) { return a/b;}
3、找到.DEF文件并打开,EXPORTS
; Explicit exports can go here
Mul @1 (新加行)
Div @2 (新加行)
4、在调用的头文件中加入:typedef int (CALLBACK *LPMUL)(int,int);及 typedef double (CALLBACK *LPDIV)(double,double);
5、 在调用文件中加入代码: UpdateData(TRUE);
HINSTANCE hInst = LoadLibrary("Cal.dll");
LPNUM lpNum;
lpNum = (LPNUM)GetProcAddress(hInst,"Mul");
m_c = lpNum(m_a,m_b);
UpdateData(FALSE);
FreeLibrary(hInst);及(因为有两个函数Mul&Div)
UpdateData(TRUE);
HINSTANCE hInst = LoadLibrary("Cal.dll");
LPFNUM lpfNum;
lpfNum = (LPFNUM)GetProcAddress(hInst,"Div");
m_last = lpfNum(m_first,m_second);
UpdateData(FALSE);
FreeLibrary(hInst);