VC编译程序,运行时提示“由于应用程序的配置不正确,……”解决方法

       下面分三种情况对运行错误“由于应用程序的配置不正确,……”进行解决,包括VC6.0、VC.NET2003、VC2005运行错误。

1、  VC6.0程序的一个运行错误

VC6.0程序的一个运行错误“由于应用程序的配置不正确,……”提示错误时,是由于编译程序时使用了共享连接库的方式,在操作系统支持MFC框架且有MFC*.dll文件时是可以正常运行,但是在没有MFC*.dll文件时会出现运行错误,需要在可执行的目录下增加下列文件:MFC42D.DLL,MFCO42D.DLL,MSVCP60D.DLL,MSVCRTD.DLL四个文件,RELEASE版时需要增加MFC42.DLL,MFCO42.DLL,MSVCP60.DLL,MSVCRT.DLL四个文件。(这些文件可以在VC编译器安装目录中找到,或者在系统目录下找到)

2、  VC.NET2003程序的一个运行错误

VC.NET2003程序的一个运行错误“由于应用程序的配置不正确,……”提示错误时,是由于编译程序时使用了共享连接库的方式,在操作系统支持MFC框架且有MFC*.dll文件时是可以正常运行,但是在没有MFC*.dll文件时会出现运行错误,需要在可执行的目录下增加下列文件:MFC71D.DLL,MFCO71D.DLL,MSVCP71D.DLL,MSVCRTD.DLL四个文件,RELEASE版时需要增加MFC71.DLL,MFCO71.DLL,MSVCP71.DLL,MSVCRT.DLL四个文件。。(这些文件可以在VC编译器安装目录中找到,或者在系统目录下找到)

3、  VC2005程序的一个运行错误

VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装...”
VC.net2005写的程序如何在没有.Net FrameWork的机器上运行 --解决"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
最近在公司的主要工作是做一个桌面程序,提供给公司正在为移动做的项目使用.我开始时是用C#写的程序,后来,公司要求,不安装.net framwork 2.0, 要求我改成C++的.所以后来改成VC2005和程序.原来以为可以不用安装,附带几个DLL库就可以运行程序了,哪知道,开始时,在别的电脑上都不能运行,一运行就报错,在XP如的错误如下图:
在2000上也会报错,不过,他会提示:因为少了XXX DLL,程序无法启动,于是我找到所以提示缺少的DLL放到程序目录下,2000下就可以运行了.可是在XP上还是不行,还是会报上面那个错误,我猜肯定是少了哪个DLL,可是找不出来,同事们也用了好多方法帮我找程序用到的DLL,也用到了不少的好工具,也找出了好多DLL,这些DLL加到一起,有10几M那么多(如下图).可是XP下还是不行.看来找DLL是没办法了.到网上找找办法吧.

到百度里输入"由于应用程序的配置不正确",搜索一下,嘿嘿,还真不少,都是和我一样,VC2005写的程序,在2000下可以用,在XP,2003下不行,不过发现,都是有人问,没人回答,可怜的人啊,咋就和我一样不幸呢.继续找啊找啊,找到了,找到一个人,提供了三个方法,摘下来,如下:
最近在VS2005下用C++写了一个Console程序,在一台未安装VS2005上运行,显示: "系统无法执行指定的程序"
原来用VC6和VS2003的话,是会提示缺少"**.dll",但是用VS2005却没有这样的提示。
用命令行方式运行,提示: "系统无法执行指定的程序" 直接双击运行,提示: "由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
自己实验了一下,感觉以下两种解决办法是比较方便的:方法一:在C:/Program Files/Microsoft Visual Studio 8/VC/redi st/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll msvcp80d.dll msvcr80d.dll Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。
其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!
方法二:修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
方法三:
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc" 这样生成的exe文件应该就可以在其他机器上跑了。
方法四:
你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装
我逐一测试下来,直到第三个方法才成功.第二个方法不知道在哪里修改编译选项所以放弃了,第四个方法不喜欢,这跟直接安装.net framework 2.0 有什么区别吗?还不如直接安装.net framework 2.0 呢.
使用第三种方法,编译后,程序的文件会变大好多,因为其已经将使用到的DLL库静态编译到了程序里了.我这个程序原来的大小是288K,如图:
而采用第三种方法生成的程序却有2.85M那么大,如下图所示:
不过比起那么多的DLL来,这点大小不算什么.不过,在运行时,相信占用的内存应该会多一点.
如果你正在使用VC2005,也出现这样问题的话,就试试上面的方法吧.
发表于 @ 2008年06月21日 12:01:00


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/byxdaz/archive/2008/06/21/2572382.aspx

你可能感兴趣的:(所有技术文章)