• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

MFC扩展动态链接库

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网

我接触DLL的时间也不长,对DLL的了解也不是很深,在这里以一个简单的例子说明一下应用程序与DLL是如何工作的,希望给初学者一些帮助。文章附有源码,以编译通过。

 一、创建动态链接库:

1,启动VC,在Project选项卡中选择MFC AppWizard[dll],输入工程名字,单击OK,然后选择MFC Extension DLL(using shared MFC DLL),单击完成。

2,在cpp文件中定义函数ShowMessage(),如下所示: extern "C" _declspec(dllexport) void ShowMessage() { AfxMessageBox("The function is in the MFC Dll"); } 说明,extern "C" 表示该函数可以在不是用C++语言所写的应用程序中使用。dllexport说明函数是导出函数。当然,要导出函数还可以在def文件中加入函数名即可。

3,编译连接,生成dll文件(在debug目录下)。

二、创建应用程序:

在这里创建一个基于对话框的应用程序。添加一个编辑框,用于显示所加载链接库的路径。三个按钮,一个用于打开文件,让用户选择所要加载的链接库;一个用来加载链接库并调用链接库中的函数,另一个用于退出应用程序。 代码如下所示:

void CUseDll2Dlg::OnSelect() //选择所要加载的链接库

{ // TODO: Add your control notification handler code here

CString filter;

filter="Dll(*.dll)|*.dll|All Files(*.*)|*.*||";

CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);

if(dlg.DoModal()==IDOK)

{ m_strPath=dlg.GetPathName(); }

UpdateData(FALSE);

}

void CUseDll2Dlg::OnButtonRun()

{ // TODO: Add your control notification handler code here

HMODULE hdll=::LoadLibrary(m_strPath);//加载链接库

if(hdll==NULL) {

MessageBox("加载动态链接库失败!","Warning",MB_OK|MB_ICONWARNING); return;

}

typedef void (*pShow)();

pShow Show=(pShow)::GetProcAddress(hdll,"ShowMessage");

if(Show==NULL) {

MessageBox("The function can not be found!","Warning",MB_OK|MB_ICONWARNING);

} else

Show(); //调用

}

感谢大家的光临,如有问题需要交流请发邮件到:wang03011282@163.com

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网