在运行时调用动态链接库 VS2010示例

  这里不再介绍动态链接库概念等知识,纯粹新建一个项目用来表述怎么在运行时调用动态链接库,代码中会给出相关注释。开发工具用的是VS2010旗舰版。

一、创建动态链接库项目:

1.新建项目——选择Win32项目,输入名称后(这里我输入的项目名称为sunlib),然后选择下一步,在随后的应用程序类型中选择 “DLL”,单击完成,即可完成创建DLL项目

如下图所示:

 

2.在DLL项目中添加导出函数,函数可以添加在dllmain.cpp中,也可以添加在sumlib.cpp中,这里添加在sumlib.cpp中:

//这里添加一个计算两数和的导出函数
// extern "C"表示函数可以被C语言引用
// _declspec(dllexport)指定这是一个到处函数
extern "C"_declspec(dllexport) int sum(int a,int b)
{
    return a+b;
}

添加代码后,启动调试就可以在sumlib项目文件夹下的Debug文件夹下看到生成的sumlib.dll和sumlib.lib文件:

 

二、加载和使用DLL

1.新建一个基于对话框的MFC项目,命名为MFCEx7,界面设计如下图:

2.使用加载时动态链接的程序需要导入库(*.lib文件),在MFCEx7项目中,打开MFCEx7项目属性框,依次选择——连接器——输入,在附加依赖项中添加sumlib.lib:

此时,需要把sumlib项目生成的sumlib.lib文件和sumlib.dll文件复制到MFCEx7项目文件夹下;

 

 3.为ADD按钮添加点击事件响应函数:

HINSTANCE hinstLib;
PROCSUM procsum;

BOOL  fFreeResult;

//加载DLL文件,获取DLL句柄
hinstLib = LoadLibrary(L"sumlib.dll");

//句柄有效,获取sum函数地址
if ( hinstLib != NULL )
{
    procsum = (PROCSUM)GetProcAddress(hinstLib,"sum");

    if( procsum != NULL )
    {
        CEdit *pSumEdit=(CEdit*)GetDlgItem(IDC_EDIT_SUM);         
        int a = GetDlgItemInt(IDC_EDIT_A);
        int b = GetDlgItemInt(IDC_EDIT_B);

        CString szSum;                               
        szSum.Format(_T("%d"),a+b);                
        pSumEdit->SetWindowText(szSum);         
    }

    fFreeResult = FreeLibrary(hinstLib);
}

 

4、编译执行,即可运行成功。

 

 

posted @ 2014-06-10 23:30  vitah  阅读(10046)  评论(0编辑  收藏  举报