中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > VC环境与编译调试发行
遭遇MFC系统动态链接库失效——我的一次排错经历
作者:未知 时间:2005-07-20 14:22 出处:VC知识库 责编:chinaitpower
              摘要:遭遇MFC系统动态链接库失效——我的一次排错经历
遭遇MFC系统动态链接库失效——我的一次排错经历
作者: YangLanGuang

我的拙作attendance个人考勤软件在VC知识库网站(www.vckbase.com)发表后,陆续有朋友来信提出一些问题,其中有一个朋友告诉我:“下载了您的个人考勤软件源码,为什么一运行就出错误”,当时因为自己没有碰到过这样的问题,答复也就不甚了了,说不到点子上。
昨天,因为又有朋友来问起,我就又翻出attendance个人考勤软件,运行了一下,结果真就遇见了“一运行就出错”的问题,下面把我遇到的情况和解决问题的过程介绍出来,可能对曾经碰到过类似问题而不知如何解决的一些朋友会有所帮助和启发。

我是在DEBUG状态编译环境下运行attendance.exe的,一运行就出错,经过几次断点运行以后发现出错点位置在CAttendanceApp类的InitInstance()函数中的以下代码行
if (RunEmbedded() || RunAutomated())
从这儿再往下运行一步就出错,并且报出出错位置在动态链接库“Mfco42d.dll”中。然后我尝试作以下改动:

1.程序代码不加改动,把编译环境切换到Release状态下重新编译运行,结果并不出错。

2.从VC++开发平台 点击“工程-设置”菜单,弹出Project Settings对话窗口中选Win32 Debug的General选项卡,其上有Microsoft Foundation Classes列表框,点其中的下拉箭头,把原来的“Use MFC in a Shared DLL”改换成“Use MFC a Static Library”。就是把动态库改换成静态库。点“确定”退出。再重新编译运行就可不再出错。但这时查Debug目录下的attendance.exe程序文件的大小将达到2M以上。

3在“Windows资源管理器”中点选“工具-查找-文件或文件夹”菜单,在弹出的查找对话框中查找文件“Mfco42d.dll”发现是在Windows操作系统目录的System子目录下。找到这个文件并把它改名(当然要先去掉它的“只读”属性),再来运行attendance.exe程序,结果发现用上面1.2.两种方法编译出来的attendance.exe程序运行依然正常。但是在Debug状态下如果仍然采用动态库编译出来的
attendance.exe程序,运行时就会发生“找不到Mfco42d.dll文件”的错误,可见上面1.2.两种方法编译出来程序运行时不依赖于外部的Mfco42d.dll库,毛病就出在Mfco42d.dll文件上了。把它用好的来替换掉,可能会解决问题!

从Mfco42d.dll文件名判断,它不会是Windows的系统文件,而是VC++的MFC文件,找来VC++的安装光盘,一找,很幸运,它不曾被塞进打包文件而是与其它的dll文件一起存放在VC98的Debug子目录下,把它拉过来塞到Windows\System子目录下再重新编译运行,OK!全部正常。

自拙作attendance个人考勤软件发表后,我又作了一些修改,纠正了其中的错误,又对程序的功能作了进一步的完善,主要是增加了全年多页打印等功能,感兴趣的朋友可到http://www.vckbase.com/code/viewcode.asp?id=1471下载!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有