vc学习笔记之dll

来源:互联网 发布:linux 卸载cuda 编辑:程序博客网 时间:2024/05/16 10:59


在解决方案资源管理器中源文件下新建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模块将从调用进程的地址空间卸载。