在VC环境下编的程序在VS平台上运行时(默认是DEBUG版编译)会出现报错:找不到MFC42D.DLL及fatal error LNK1103: debugging information corrupt; recompile module
其实一般在编程序时,都是生成了调试版的程序,就是在那个Debug目录下的可执行文件。运行这调试版的exe文件,都会动态连接 MFC42D.DLL和MSVCRTD.DLL这两个文件,所以你如果将这个文件在其它机器上运行而这台机器没有这两个文件或者缺少一个,系统则会出 现:“找不到所需.dll文件-某某.dll”这样的提示。而一般系统都不带有这两个文件,除非是装了vc等。而在Release目录下,可执行文件不会用到那两个讨厌的dll文件。
【错误】:“没有找到MFC42D.DLL,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题。”
【原因】:电脑未安装vc6.0,系统目录下面没有MFC42.DLL,MFC42D.DLL,MFCN42D.DLL和MFC042D.DLL这四个DLL文件
【解决】:1.最原始的方法:将上面的四个DLL文件下载拷贝到当前目录或者系统目录(C:\WINDOWS\system32){到安装了vc6的系统目录下面拷贝也可以}。
2.使用release版本:菜单build->Set Active Configuration,然后选择Release
3.使用静态编译:菜单project->settings,在General选项卡里第一项选择Use MFC in a static Library,同时build->rebuild all
采用上面的静态编译时又出现了错误,
【错误】:fatal error LNK1103: debugging information corrupt; recompile module
【原因】:默认的SDK版本过高,以下是网上的说法:2003年2月的SDK是支持VC6的最后一版,在此之后的就都是使用VC7/VC8来开发的了。随着VC7/VC8中新的debug信息格式和一些安全检查机制的导入,在VC6上使用这些库的Debug版本的时候就会产生如题的链接错误。具体而言,你可能在VC6上使用了XP,Windows 2003或者Windows 2003 R2版本的SDK。
【解决】:1.用Release版编译,不过这样就没法调试了。
2.VC6.0编译器,到Tools -> Options -> Directories,将SDK的顺序放到最下边或者直接删掉较新SDK的Directories:包括Include files和Library files。
3.如果你必须使用SDK中的新特性,那么找一个2004年之前的SDK吧。
4.这个对VS无效,可以尝试 在Solutions Explorer中选中工程,点右键选Properties -> Linker -> Debugging,把Generate Debug Info选项改为No.