为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

应用程序 配置不正确 ,程序无法启动

2017-10-25 4页 doc 16KB 33阅读

用户头像

is_842972

暂无简介

举报
应用程序 配置不正确 ,程序无法启动应用程序 配置不正确 ,程序无法启动 参考资料 1、VS2005解决"应用程序配置不正确,程序无法启动"问题 2、VS2005安装文件"由于应用程序配置不正确,应用程序未能启动" 3、MicrosoftVisualC++2008发布程序的部署问题 4、VC编写的程序不能在其他机器上运行的解决方案 新增(先看看上面的4个链接之后,遇到问题之后再看下面的几个链接) 5、关于vs2008sp1C++生成的manifest中运行库版本号的问题(推荐1) 6、在VC++2008的项目中,如何显示地指定要使用的C++库的版...
应用程序 配置不正确 ,程序无法启动
应用程序 配置不正确 ,程序无法启动 参考资料 1、VS2005解决"应用程序配置不正确,程序无法启动"问题 2、VS2005安装文件"由于应用程序配置不正确,应用程序未能启动" 3、MicrosoftVisualC++2008发布程序的部署问题 4、VC编写的程序不能在其他机器上运行的解决 新增(先看看上面的4个链接之后,遇到问题之后再看下面的几个链接) 5、关于vs2008sp1C++生成的manifest中运行库版本号的问题(推荐1) 6、在VC++2008的项目中,如何显示地指定要使用的C++库的版本?(推荐2) 7、VC9SP1generatesmanifestswiththewrongversionnumberps:有人认为这是一个bug,并汇报到ms网站上,但"推荐1"认为这不是一个bug8、VCRuntimeBinding.(ms的官方blog对这个问题的解释) 关于VC运行时绑定(上面链接的中文翻译) 9、部署(C++)(推荐,比较难看懂) 关于链接9下几个比较有用的链接: 程序集搜索顺序(英文),主要讲的是CRT、MFC等的DLL和manifest文件的部署方式 选择部署方法 使用ProgramFiles\MicrosoftVisualStudio8\VC\Redist目录中提供的文件将特定VisualC++程序集作为应用程序的私有程序集安装。允许没有管理员 权限的用户安装应用程序或可以通过共享运行应用程序时,建议使用这种方法。有关示例,请参见如何:使用XCopy进行部署。(摘自:选择部署方法) 总结如下: 使用vs2008/vs2008开发的程序有2种部署方法:共享并行程序集和私有程序集部署方法 所谓的共享并行程序集部署方法是指程序依赖的CRT、MFC、ATL的DLL和manifest文件位于目标机器上的c:\windows\winsxs目录中,发布程序的时候只需要将程序拷贝到目标机器上就可以了;私有程序集部署方法指的是发布程序程序的时候,将所依赖的crt、mfc、atl的dll放在程序的当前目录下 对于release版程序 比较的简单的方法是采用共享程序集的方式来部署,安装 vcredist.exe(MicrosoftVisualC++2008SP1RedistributablePackage(x86) 也可以采用下面debug程序的私有程序集的部署方法 对于debug版本程序 ?若目标机器安装了VS开发环境(vs2005sp1/vs2008sp1),则在机器上同时也安装了共享并行程序集,包含各个版本的dll(8.0、9.0版本,位于C:\Windows\Winsxs目录下),则不需做任何的部署,直接将需要发布的程序拷贝到目标机器上就可以了,这和release版程序的发布方式是一样的 ?在没有安装VS开发环境(安装了vs2005sp1/vs2008sp1)的机器上,只能采用私有程序集的方式来部署(因为vcredist.exe只安装了release版的CRT、MFC、ATL的DLL和manifest文件,没有对应的debug版本) 已知的2种方法:(针对vs2008sp1,安装了sp1之后,在系统上会存在两个版本的CRT、MFC、ATL的DLL:9.0.21022.8和9.0.30729.1) 1、使当前程序的manifest文件中的依赖项的版本号与vc安装目录下的redist目录下的dll的版本一致,均为9.0.30729.1 方法: a、在编译项目时定义一个符号_BIND_TO_CURRENT_VCLIBS_VERSION,该符号定义于 C:\ProgramFiles\MicrosoftVisualStudio9.0\VC\include\crtassem.h文件中(假设VC安装在c盘),这样使得编译后的程序的manifest依赖于CRT9.0.30729.1版本(同样的,对于MFC也应该定义一个类似的符号,大家可以自己在VC的include目录下搜索"9.0.30729.1"或"9.0.21022.8",就可以找到对应的定义该符号的头文件) b、通过外部工具修改生成的exe或dll中manifest文件(好像windowssdk中的mt.exe可以做到,不过关于这个工具的资料十分的少) 、将VC安装目录下的redist目录下2 (C:\ProgramFiles\MicrosoftVisualStudio9.0\VC\redist)的 Microsoft.VC90.CRT拷贝到要发布的程序的当前目录下,修改 Microsoft.VC90.CRT目录中的Microsoft.VC90.CRT.manifest文件中的版本号,改成9.0.21022.8,这样使得程序误以为该目录下的vc的dll版本是9.0.21022.8(实质上仍然是9.0.30729.1版本) 说明: 1、链接4的说法是错误的,根据我自己的实验,如果采用私有程序集的部署方法,必须保证manifest文件中的版本号都是相等的,不存在要发布的程序的manifest文件中的版本号大于等于依赖项(CRT、MFC、ATL的dll)的版本号的说法 2、采用共享并行程序集部署方式发布的程序,会自动根据所谓的"policy"(位于C:\WINDOWS\WinSxS\Policies目录下)进行跳转(由低版本号向高版本号跳转);例如程序中的manifest的版本号为9.0.21022.8,而实际上程序是用vc2008sp1编译的(版本号为9.0.30729.1),在程序实际执行的时候,会根据 x86_policy.9.0.Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_x- ww_037be232目录下的9.0.30729.1.policy文件(可以用记事本打开该文件)中的内容选择9.0.30729.1版本的debugCRT 我个人推荐的阅读顺序:?先看前面的4个链接,大致有点印象,知道什么是manifest、如何查看manifest文件的内容(能力强的话,也可以自己编写manifest文件)、在vc中如何查看编译过程中生成的manifest文件内容、知道C:\WINDOWS\WinSxS\目录是干什么的、知道vcredist.exe这个程序;?再尝试着看看链接7、8、9,这些链接的文章内容十分的晦涩,有的还是英文的,需要有点耐心看;?最后仔细的看看链接5、6,并多多试验(特别推荐链接5,这个链接中的内容十分的详细) 转: "七"乐无穷,尽在新浪新版博客,快来体验啊~请点击进入~
/
本文档为【应用程序 配置不正确 ,程序无法启动】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索