现在的位置: 首页 > 综合 > 正文

我的DLL源码(实现2个数的加法和减法)

2013年08月16日 ⁄ 综合 ⁄ 共 937字 ⁄ 字号 评论关闭

 我的DLL源码(实现2个数的加法和减法)

dll工程的dll.cpp
int add(int a,int b)
{
 return a+b;
}

int sub(int x,int y)
{
 return x-y;
}

dll工程的模块定义文件dll.def

LIBRARY dll //在def文件中LIBRARY语句说明该def文件是属于相应DLL的
EXPORTS
add
sub

用MFC的主体主要源码

void CDLLTestDlg::OnBtnTest()
//显式链界测试函数
{ UpdateData();
 typedef int(*padd)(int a,int b);
 //使用类型定义关键字typedef,定义指向和DLL中相同的函数原型指针
 HINSTANCE HDLL=LoadLibrary("dll.dll");
 //通过LoadLibray()将DLL加载到当前的应用程序中并返回当前DLL文件的句柄
 padd add=(padd)GetProcAddress(HDLL,"add");
 //通过GetProcAddress()函数获取导入到应用程序中的函数指针
 CString str;
 str.Format("两数之和是:%d",add(m_n1,m_n2));
 MessageBox(str);
 FreeLibrary(HDLL);
 //函数调用完毕后,使用FreeLibrary()卸载DLL文件
 //1,首先要将DLL文件拷贝到工程所在的目录或Windows系统目录下。
 //2,使用显式链接应用程序编译时不需要使用相应的Lib文件
 UpdateData(FALSE);

}

//引入库函数,实现隐式链接
_declspec(dllexport) int add(int a,int b);
_declspec(dllexport) int sub(int x,int y);
void CDLLTestDlg::OnButtonADD()
{
 
    UpdateData();
 m_add=add(m_n1,m_n2);
 UpdateData(FALSE);
}

void CDLLTestDlg::OnSUB()
{
 
 UpdateData();
 m_sub=sub(m_n1,m_n2); 
 UpdateData(FALSE);
}

抱歉!评论已关闭.