电脑教程中文网
首页  动态网站建设学习 程序  笑话  论坛 娱乐  交友 ADSL  峄城  成功者
中文名:电脑教程中文网,收集了大量的电脑教程! 编程技术文档 游戏开发 笑话站暂时关闭 设为首页
网页设计 HTML | Dreamweaver | CSS | Firework | FrontPage WEB开发 ASP | JSP | PHP | .NET | CGI | JS | VBS | XML | IIS6 | Apache | PWS
程序设计 Java | C++ |VC++ | C# | Delphi | VB | C语言 | 汇编 | Pascal | Perl 数据库 MSSQL | MySQL | Access | VF | Oracle | DB2 | SYBASE |
办公软件 Word | Excel | WPS | PowerPoint 动画平面 Photoshop | ACDSee | 3Dmax | Flash | Coreldraw |
操作系统 Windows 2000 | Windows XP | Windows 2003 | SCO Unix | Windows Vista | unix、Linux | 综合| 服务器 | 系统安全| 黑客技术
其  他 UltraDev | DOS | UML | PWS | Powerbuilder | 开发心得 | 设计理念 | 病毒库 | 其他 | LightTPD (分类排序给您带来不便请谅解)
推  荐: Java文档500篇》《ASP.NET与相关数据库技术高级指南》《TC图形函数详解》《C函数速查手册》《C语言编程宝典之一》《MFC深入浅出》《黑客零起点》《VC++ 编程指南》《JScript 用户指南》 《CSS教程宝典》《Microsoft Jet SQL 参考》《delphi技巧集合》《MySQL 4.1.0 中文参考手册》《MySQL中文手册
【导航】 您现在的位置 : 首页 - VC教程 - 《VC++精华技术文档收集(2)》- MFC扩展动态链接库

MFC扩展动态链接库

日期:2005-8-16 10:28:28    作者:wang03011282   人气:   来源:网络





下载本文所附源代码

我接触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  




网站首页 - 友情链接 - 公司简介 - 联系方式 - 广告投放 - 客户服务 - 错误报告 - 免责声明 - About us
CLDE.NET电脑教程中文网版权所有 未经许可禁止镜象和复制本站资料 MSN:CLDE_NET@hotmail.com
技术支持:CLDE.NET信息中心 鲁ICP备05039940号 友情链接QQ:784079(隐)