动态链接文件dll的使用

来源:互联网 发布:光通讯网络交换机 编辑:程序博客网 时间:2024/06/06 01:59
dll的使用
以我在VC++生成DLL(DynamicLinkLibrary)的方法一》的博文生成的Dll2.dll为测试


动态链接文件dll的使用

命名为 DllTest


选择生成一个基于对话框的程序
动态链接文件dll的使用
单击完成

动态链接文件dll的使用    
双击IDD_DLL1TE这个图标,窗口出现如下效果
动态链接文件dll的使用
拖放两个Button控件,取名为Add和Subarct。分别双击两个按钮,添加两个关联函数来处理单击事件。
添加的两个函数出现在Dll1TestDlg.cpp文件中。分别为:
void CDll1TestDlg::OnBtnAdd()
void CDll1TestDlg::OnBtnSubtract()

并编写代码如下:
void CDll1TestDlg::OnBtnAdd()
{
    // TODO: Add your control notification handler codehere

    HINSTANCEhInst;
    hInst =LoadLibrary("Dll2.dll");
    typedef int(*ADDPROC)(int a, int b );
    ADDPROCAdd;
    Add =(ADDPROC)GetProcAddress(hInst,"add");
   if(!Add)
    {
      MessageBox("获取函数地址失败");
    }
    CStringstr;
    str.Format("5+3=%d",Add(5,3) );
   MessageBox(str);
   FreeLibrary(hInst);

}

void CDll1TestDlg::OnBtnSubtract()
{
    // TODO: Add your control notification handler codehere

    HINSTANCEhInst;
    hInst =LoadLibrary("Dll2.dll");
    typedef int(*ADDPROC)(int a, int b );
    ADDPROCSbstract;
    Sbstract =(ADDPROC)GetProcAddress(hInst,"substract");
   if(!Sbstract)
    {
      MessageBox("获取函数地址失败");
    }
    CStringstr;
    str.Format("5-3=%d",Sbstract(5,3) );
   MessageBox(str);
   FreeLibrary(hInst);

}
LoadLibrary、GetProcAddress和FreeLibrary函数参看MSDN helplibary

编译->链接->OK 效果如下:
动态链接文件dll的使用