visual studio 2005 ( vs2005 , vc2005 ) 编译的应用程序无法运行的解决方案

本文主要是介绍visual studio 2005 ( vs2005 , vc2005 ) 编译的应用程序无法运行的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    有些早期的visual studio 2005 C++工程,用vc2005编译debug配置一切正常,运行时却提示:

    无法启动程序

    由于应用程序配置不正确,未能启动此应用程序。请查看清单文件以查找可能的错误。重新安装该应用程序可能修复此问题。有关更多详细信息,请参见应用程序事件日志。

   查看事件日志,出错日志记录里有如下信息:

   找不到附属汇编 Microsoft.VC80.DebugCRT,上一个错误是 参照的汇编没有安装在系统上。
Resolve Partial Assembly 为 Microsoft.VC80.DebugCRT 失败。 参考错误消息: 参照的汇编没有安装在系统上。

     VS2005编译出来的应用程序,会附带一个 .manifest (清单文件),里面会记录应用程序运行所依赖的 VS2005运行库的准确版本。 如果应用程序链接时使用了其他人编译好的库,由于这些直接使用的库依赖的是其编译环境的VS2005运行库的准确版本, 和当前安装的VS2005的版本可能不符,尤其是依赖更新的版本, 而当前安装的VS2005版本比较旧时,就会出现上述问题。

    主要是 Microsoft.VC80.DebugCRT 、Microsoft.VC80.DebugMFC 的依赖版本容易和本机版本不符。网上的通常解决方案是,尝试安装不同版本的VS2005 ( VC2005 ) 运行库,这个方法对于release配置编译出来的应用程序运行问题,是个好的解决方案。 但是对于debug配置编译出来的应用程序运行问题无效。因为网上下载到的不同版本的VS2005 ( VC2005 ) 运行库,包含的是Microsoft.VC80.CRT 、Microsoft.VC80.MFC 运行库,不是Microsoft.VC80.DebugCRT 、Microsoft.VC80.DebugMFC 库。

     对于这个问题,可以用如下方法解决:

     1、修改编译配置:“ 项目 -> 属性 ->配置属性 -> 清单工具 -> 输入和输出 -> 嵌入清单 ” 为“否”。

     2、重新编译项目,会生成目标应用程序名同名,但多一个“ .manifest” 后缀的清单文件,在VS里面打开这个manifest文件, 检查其中的 version 信息, 比如:

    name="Microsoft.VC80.DebugCRT" version="8.0.50727.6195"

    name="Microsoft.VC80.DebugMFC" version="8.0.50727.6195" 

   3、检查VS2005版本:帮助 -> 关于 菜单里有版本信息,比如:8.0.50727.42。然后将上一步manifest文件中版本数字大于此版本数字的,都修改为当前版本数字, 比如:将 8.0.50727.6195  修改为 8.0.50727.42。 

   然后运行,通常就可以运行起来了。如果不行,可以将本机 VS2005版本更新为尽可能新的版本再重新尝试。

注意:上述方法 修改的.manifest 文件要复制一份,保存在不同的目录,因为后续编译会重新生成.manifest 文件, 这时可以用复制的那份来覆盖新生成的 .manifest 文件。( 这个操作也可以自动化: 

       修改VS2005项目配置:“ 项目 -> 属性 ->配置属性 -> 生成事件 -> 生成后事件  ”, 

       在命令行,用copy命令实现 manifest 文件的覆盖操作, 比如:

           copy /Y  xxx.exe.manifest  debug

       上面命令中xxx表示应用程序名,备份的manifest文件在当前目录,生成的应用程序在debug目录。 )

   附加说明:

   对于网上下载的早期程序,运行出现上述同类错误提示,也可以通过修改manifest文件的方法解决,不过期manifest文件通常内置在程序内部,可以通过使用工具 ResourceHacker (ResHacker ) 打开应用程序,检查其manifest中的版本信息,再进入本机C:\Windows\WinSxS下查看本机已安装的运行库版本,将应用程序的manifest里的版本信息修改为本机对应版本,然后保存。应用程序即可正确运行。

这篇关于visual studio 2005 ( vs2005 , vc2005 ) 编译的应用程序无法运行的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124516

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计