天天看点

vc学习笔记之dll

在解决方案资源管理器中源文件下新建def文件,格式如下:

LIBRARY 

EXPORTS

functionname

在cpp文件中写要导出的函数,在.h文件中写函数声明,应用时包含头文件就可以替代声明。

动态加载dll不需要设置vc包含目录、库目录和链接依赖,动态加载dll示例代码:

HINSTANCE hdll;

hdll=LoadLibrary("dll1.dll");//加载dll

typedef int ( *ADDPROC)(int a,int b);//定义函数指针ADDRPROC

ADDPROC padd=(ADDPROC)GetProcAddress(hdll,"add");//检索dll中EXPORTS函数

if(!padd)

{

MessageBox("获取函数地址失败!");

return;

}

CString str;

str.Format("5+3=%d",padd(5,3));

MessageBox(str);

FreeLibrary(hdll);//减少被加载的dll引用计数,计数变为零时,该dll模块将从调用进程的地址空间卸载。