在未安装VS2005的机器上运行VS2005的程序,可能会出现如下错误提示:
1、由于应用程序配置不正确,程序未能启动,重新安装应用程序可能会纠正这个问题(Multi-threaded DLL (/MD)选项下生成的代码会产生这个问题)
2、应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序。(Multi-threaded Debug (/MTd)选项下生成的代码会产生这个问题)

几种可能的解决办法:
1、这两个问题的原因是目标机器上缺少VC8相关的运行库或者版本不匹配,最简单的解决方案就是把VC安装目录下vcredist_x86目录下的vcredist_x86.exe在目标机器上运行一把,把库安装上去就解决了。
2、是缺少了dll文件所导致的这个错误,只要把以下dll复制到执行程序exe的当前目录下面,就可以了,这几个dll分别是:(msvcm80.dll,msvcp80.dll,msvcr80.dll,Microsoft.VC80.CRT.manifest)或(msvcm80d.dll、msvcp80d.dll、msvcr80d.dll、Microsoft.VC80.DebugCRT.manifest)
3、VC++2005对dll的版本要求非常严格,对于用VC++2005编写的程序和动态链接库,Release版本的程序必须调用Release版本的dll,Debug版本的程序必须调用Debug版本的dll,否则就可能出现这个问题。

最近几天被这个问题困惑了许久。用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始化失败”!!查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005 sp1补丁的;有让安装vcredist_x86.exe的;有让把CRT库的dll直接拷贝到程序目录的;有让清理注册表的;有让装.NetFramework新版本的;有让查manifest的;结果我尝试了半天,几乎都是浪费时间。现在把处理的方法说一下,省得大家再走弯路:
1、VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在 C://windows/WinSxS 文件夹中,并用特定的文件夹/文件名称进行标识;
2、与VC6不同, VC2003、VC2005、VC2008及其后续版本,引入了manifest清单的概念,即应用程序编译后会同时生成对应的.manifest文件,并将该.manifest文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。VC6编译的应用程序对CRT、MFC、ATL的dll都是直接调用,而VC2003、VC2005、VC2008编译的程序都是先查询编译到资源中的manifest中的记录,然后按照记录提供的版本和名称去搜寻对应的CRT、MFC、ATL库以及随库发布的.manifest文件,搜寻的路径包括当前目录、C://windows/WinSxS 等等,如果没有找到对应的库文件,则提示“应用程序正常初始化失败”;
3、用文本编辑器打开exe或dll对应的.manifest文件,查看它引用的CRT、MFC、ATL库的版本;或者,用UltraEdit直接打开exe或者dll,从资源区中找到编译进去的.manifest信息,找到它引用的CRT、MFC、ATL库的版本;或者,运行程序,当程序弹出“应用程序正常初始化失败”对话框时,打开事件查看器,可以看到出错的原因是因为缺少了某某版本的CRT、MFC、ATL库,这个库的版本信息一般类似于“Microsoft.VC80.DebugCRT”,之后到C://windows/WinSxS 或者VC200X的安装文件夹中搜索包含这个字符串的文件夹和文件,将搜索到的dll和.manifest文件都拷贝到应用程序所在的文件夹中,其中,.manifest文件必须重命名(例如重命名为Microsoft.VC80.DebugCRT),这样应用程序就可以正常运行了;

关于生成清单:
VS2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该exe文件运行时没有相应的清单文件而运行失败并提示如上错误。
解决方案很多,列举如下:
1、由于这是在链接动态运行库出现的问题,所以你可以选择代码生成的连接方式为/MTd而非/MDd,不用这些DLL文件从而避免问题的出现。该方法有一个很显然的缺点:适用范围有限,不推荐该方法。
2、既然跟FAT32系统有关,那么我们可以选择在NTFS文件系统中开发从而避免该问题,此方法同上,也是采用的回避问题的方式,不提倡。
3、该方法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解决问题。该方法是唯一真正针对问题所在而提出的解决方法,使清单工具可以正确更新。(此方法是官方解决方法,也比较方便,推荐)
4、既然问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:
     1) 不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。
     2)不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默认情况下,其文件名为exe文件的全名加上“.manifest”),避免了嵌入清单文件可能失败的问题。在程序运行时,会用到该清单文件。显然,这种方式使可执行程序产生了更多的外部依赖,不推荐。

程序初始化失败的解决办法相关推荐

  1. linux交互式进程初始化失败怎么办,“登录进程初始化失败 交互式登录进程初始化失败”的解决办法...

    最近似乎出现"登录进程初始化失败 交互式登录进程初始化失败"错误,造成Windows 7操作系统无法正常登录.下面西部e网整理了一下解决这个问题的多种方法,供参考. 问题原因: 1 ...

  2. linux交互式进程初始化失败怎么办,登录进程初始化失败交互式登录进程初始化失败的解决办法...

    最近似乎出现"登录进程初始化失败 交互式登录进程初始化失败"错误,造成Windows 7操作系统无法正常登录.下面西部e网整理了一下解决这个问题的多种方法,供参考. 问题原因: 1 ...

  3. vue init webpack Travel项目初始化失败的解决办法

    1.概述      最近,我也在学习慕课网Dell Lee老师的Vue2.5开发去哪儿网App 从零基础入门到实战项目课程,由于老师使用的是vue-cli脚手架工具,再者很多同学都卡在了vue ini ...

  4. 【问题】Adobe安装程序初始化失败

    问题: 下载Adobe应用的安装包之后,打开安装程序,弹出提示说安装程序初始化失败. 解决方法: 打开C:\Program Files (x86)\Common Files\Adobe这个目录,删除这 ...

  5. 校园宽带客户端认证程序无法继续初始化绑定通信接口网络地址失败_解决办法

    宽带认证客户端-警告"认证程序无法继续初始化,绑定通信接口网络地址失败(0.0.0.0:61400)!!!请检查是否有其他程序占用或拦截--- "解决办法 1.打开控制面板-网络和 ...

  6. 微信小程序android错误,微信小程序首页数据初始化失败的解决方法

    一. 问题描述 用户首次后再次进入小程序时,我们通常需要通过获取用户openid或unionid用作唯一标示与后台进行数据交流,初始化用户信息.当我们通过第三方服务器跟微信建立请求时,微信需要用户确认 ...

  7. 【win10/win11下启动wsl/wsl2出现“占位程序接收到错误数据“启动失败的解决办法】

    win10/win11下启动wsl/wsl2出现"占位程序接收到错误数据"启动失败的解决办法 出现场景: 出现原因: 解决方法: github上有相关的issue: https:/ ...

  8. 应用程序初始化失败问题的解决

    <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-al ...

  9. 因为窗口站已关闭 应用程序初始化失败

    因为窗口站已关闭 应用程序初始化失败 再关机的时候总是弹出几次这句话,可能有很多种原因. 下面是我遇到的情况: 我的笔记本是 ThinkPad R400  7445a46 因为进过水导致触摸板下面的右 ...

最新文章

  1. 计算机组成原理——总线结构
  2. 【DIY】可能是最简单粗暴、省钱省电的家用温湿度计解决方案
  3. AutoCAD.NET API 最新(2012)教程下载及在线视频教程DevTV
  4. 使用UriBuilder快速创建URI
  5. 使用匿名内部类实现方式二线程创建 java 1615474836
  6. springbatch读取外部数据到mysql
  7. 解决在IDEA 的Maven下 出现 Cannot access in offline mode 问题
  8. python调用caffe环境配置
  9. Visual Studio 2008 可扩展性开发(八):关于用户界面的种种(上)
  10. vue中keep-alive缓存功能使用详解
  11. javascript---不可靠的“undefined”
  12. Windows 7 系统封装文字版 精简教程笔记!
  13. 简述er图的作用_ER图的理解
  14. 面试经历---广州YY(欢聚时代)
  15. 旧时王谢堂前燕,飞入寻常百姓家
  16. 搭建游戏要选什么样的服务器?
  17. 【附源码】计算机毕业设计SSM校园流浪猫关爱系统
  18. 演讲达人成长记作者1月26日西单图书大厦现场讲座
  19. Sqlserver修改表结构提示不允许保存更改。
  20. 10.10 CF - 520B

热门文章

  1. Vue 中select option默认选中的处理方法
  2. 【nssm将exe封装成服务】
  3. 电脑硬盘为什么叫计算机,为什么女生的电脑总是很卡 原来硬盘是罪魁祸首
  4. linux 根文件系统满了,Solaris 10下根文件系统满的处理方法
  5. 六、考研数据结构笔记——数组与广义表
  6. 解决处理虚拟主机中有文件触发了安全防护报警规则,可能存在webshell网页木马...
  7. kindle取消注册与注册教程
  8. Github每日精选(第99期): AirDrop 的开源跨平台Localsend
  9. IMX6ULL SPI
  10. Java软件开发实习生面试题总结