最近在处理项目问题的的时候发现了这么一个问题,就是我们的程序在调用第三方提供的dll文件的时候在一台机器上面会报14001的错误,但是在另一台机器上面不会。两台机器上面的操作系统是相同的。针对这个问题和这个错误码,查找了很多的相关资料。
vc错误查找的给予的对于14001的错误的解释:由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
下面是搜集的一些网络资料针对这个问题的说明和解决方法个人感觉还是很有参考意义的:
在VS2005下用C++写的程序,在一台未安装VS2005的系统上,
用命令行方式运行,提示:
“系统无法执行指定的程序”
直接双击运行,提示:
“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。
自己实验了一下,感觉以下几种解决办法是可行的:
方法一:
在类似C:Program FilesMicrosoft Visual Studio 8VCredistDebug_NonRedistx86Microsoft.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和你的程序捆绑安装。
如果安装Microsoft Visual C++ 2005 出现如下错误↓:
事件查看器显示:产品: Microsoft Visual C++ 2005 Redistributable -- Error 1935.安装程序集“Microsoft.VC80.ATL,type="win32",version="8.0.50727.4053",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86"”过程中发生错误。请参阅帮助和支持获取详细信息。HRESULT: 0x80070422。程序集接口: IAssemblyCacheItem,功能: Commit,组件: {97F81AF1-0E47-DC99-A01F-C8B3B9A1E18E}
解决方法:启动 Windows Modules Installer 服务,再安装。OK,解决。
http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/66bc8cab-c134-49a8-85e5-37ca9efbdeb4/
个人问题解决过程:
1.考虑的是两个方面:
一个是程序调用的dll是否提供了所要的方法;
一个是dll所依赖的dll是否完整。
这两方面都是通过depends工具来查看
2.我的问题是我用的是别人提供的dll文件自己不可以去更改dll文件的生成方式,因此所做的工作就是设法去导入dll所依赖的dll文件。
(1)配置系统环境变量的path路径使dll做可能依赖的系统dll文件能够找到依赖的dll。
(2)推测第三方所提供的dll开发时候应该用的是vs2005或者vs2008在或者就是vs2010,然后所提供的dll文件或许就是动态加载的dll,所以安装了vcredist_x86的vs2005,vs2008以及vs2010版本的,这个地方的操作对于我解决问题起了作用,但是具体是哪一个这个没有去确定
(3)为了使自己程序运行的环境没有必要都去安装vcredist_x86所以找到vcredist_x86安装之后对应的dll文件和调用的第三方的dll放在同一个目录下面,也可以放在C:WINDOWSsystem32但是path路径中的配置一定要有,一般来说都是会有的。
通过上面的三个方面个人的问题是解决了,当然具体到个人的项目里面还有很多的方面要考虑,但就这个dll加载的14001错误,上面的解决方法还是ok的。网上的相关资料还是很多的,希望个人整理的这些对你有小小的帮助。针对vcredist_x86的dll文件以及vs2005,vs2008 和 vs 2010对应的exe安装文件可以搜一下,我也把我搜到的上传一下,共享。
据其他网友推荐使用下面的方法
在Win7中运行某些软件时,突然提示出错信息“应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。”
查看win7应用程序事件日志:计算机——>右击——>管理——>事件查看器——>应用程序和服务日志
出现这个问题是因为安装windows7 后,或使用ghost版本安装后,
所以到微软官方网站下载:Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)下载:http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=zh-cn
注意:安装完了后,还需要重启一下计算机。
比较方便的方法直接下载 VC Redist Installer
VC Redist Installer(vc运行库) V1.6 英文免费安装版
类型:系统其它大小:47.7MB语言:简体中文时间:2017-06-17查看详情由于应用程序配置不正确,应用程序未能启动等绿色软件不能打开,一般都是缺少必要的vc运行库。
VC Redist Installer由国外网友McRip制作,汇集VC2005、VC2008、VC2010、VC2012、VC2013运行库,包含32及64位版本,安装自动判断。这些运行库都采用Visual Studio 20XX编写的软件必须使用公用DLL运行库。网上某些精简软件没有附带这些公用DLL,会导致这些绿化软件没法正常运行,出现“应用配置不正确”错误或者缺少msvcp71.dll、msvcr71.dll错误,安装对应VC库即可解决,这是最全最新的VC运行库的集合,安装完本库以后再使用绿色软件、游戏就不会再出这个错了。
VC++运行库有什么用?
我们为什么要使用它?什么时候需要它?太深奥的理论就不多说了,举个简单的例子,我们从网上下载来一些绿色精简软件或个人软件作品或某些游戏,运行的时候发现报错,常见的有:缺少或丢失msvcp71.dll、msvcr71.dll、msvcrt.dll、msvcrt.dll等;无法启动此程序,因为计算机中丢失 mfc*.dll。尝试重新安装该程序以解决此问题。因为这些软件是用采用Microsoft Visual Studio编写的,它们运行的过程中必须使用公用的DLL运行库,即上在所说的VC运行库。
了解了原因之后,解决方法也就明白了,有两种途径:一是安装Microsoft Visual C++运行库集成包;二是去网上寻找对应版本的VC运行库DLL文件,然后再手动复制到系统目录里。前者肯定不行,那软件太庞大了,没有必要为了几个运行库文件去下载上G的文件。后者太麻烦了,要去网上寻找,下载后还要自己手动导入,而且32位和64位系统的导入目录是不同的。
vc运行库包含组件:
现在好了,有了VC Redist Installer,一切就变得简单了,它内置了全部的VC运行库DLL文件,其组件包括:
汇聚以下组件库:
- Visual C++ 2005 x86;
- Visual C++ 2005 x64;
- Visual C++ 2008 x86 9.0.30729.7523;
- Visual C++ 2008 x64 9.0.30729.7523;
- Visual C++ 2010 x86 10.0.40219.455;
- Visual C++ 2010 x64 10.0.40219.447;
- Visual C++ 2012 x86 11.0.60830.0;
- Visual C++ 2012 x64 11.0.60830.0;
- Visual C++ 2013 x86 12.0.21005.1;
- Visual C++ 2013 x64 12.0.21005.1;
- Microsoft Visual F Runtime 2.0;
- Older Microsoft Runtimes for older software;
注意/帮助:安装过程可以自行选择,并不是要全部安装,在Windows 7下做了测试,全部安装的话时间比较长。需要说明的是如果没有开启Administrator超级用户则需要右键“以管理员身份”运行该软件并执行安装!同时,鉴于第三方软件可能会误报,实属正常,总之,放心使用即可!