VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题

上传人:桔**** 文档编号:511248049 上传时间:2023-06-24 格式:DOC 页数:12 大小:56.50KB
返回 下载 相关 举报
VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题_第1页
第1页 / 共12页
VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题_第2页
第2页 / 共12页
VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题_第3页
第3页 / 共12页
VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题_第4页
第4页 / 共12页
VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题》由会员分享,可在线阅读,更多相关《VS环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(12页珍藏版)》请在金锄头文库上搜索。

1、转自:V环境下开发的某些程序在其她机器运营提示“由于应用程序配备不对的,应用程序未能启动”的问题(IIS)比较全的有关vs部署问题集():比较全的有关vs部署问题集(2):/原文地址:V9编译的程序在没有装过V9(确切的说是.Net Faewk3.)的机器上运营时,如果提示“由于应用程序配备不对的,应用程序未能启动。重新安装应用程序也许会纠正这个问题。”这个错误,那么就阐明该程序动态链接了V的运营时库,(如果还用到了FC,那么也许动态链接了的库,同理尚有AT库),以及缺少相应的mnifes文献,程序在目的机器上没有找到这些库和配备文献,因此导致了这个错误。浮现这种状况的VC9编译器也许存在3个

2、版本,接下来分别阐明:1、没有打过任何补丁的该版本相应的C/MFC/AT库的版本号为9.02102.8,这个版本号在背面会用到。这个版本的程序部署比较简朴,直接把安装目录下的edi目录(C:Prgram Filescrooft Visa Stuio 90VCres)中需要的库以及相应的manit文献拷贝到执行程序同目录下,这样程序到任何机器上都可以正常运营了。、打过SP1补丁的VS打过该补丁后,系统中存在着两个版本的RT/MFCAL库,版本号分别为90.22.和90.30729.1,这导致了 manifes文献中记录的版本号和实际库的版本号不一致(程序规定它们的版本号一致才干运营)。这个版本的

3、程序部署需要两个环节,一方面要使afest文献中依赖项的版本号与实际库的版本号一致,均为9.3079.1,措施是在工程设立中增长一种宏定义 _BIND_T_URET_VCIBS_VEIN,该宏定义于C:Progam FileMicsoft iul Studio.VCincludecrtassem.h文献中,然后重新编译程序。接下来还是将C安装目录下的rist目录(:Program iesMicrosoft isal Stdio 90Cedist)中需要的库以及相应的manifes文献拷贝到执行程序同目录下,然后修改anifest文献中依赖项的版本号为 9.0.8,这样使得程序误觉得该目录下库的

4、版本号为9.0.2028(事实上是9.030791版本),这样程序到任何机器上都可以正常运营了。3、打过S1补丁与SP1 AL安全更新 (K93675)的VS这是最新的更新。在P补丁之后,微软又于近日发布了一种用于智能设备的 MiooftViul Stuo ervie Pck ATL 安全更新 (K7675),该补丁又将CT/MFATL库的版本号升级,为9.30729.4148,这次升级比较好,anife文献与库的版本号一致了,不像SP同样升级的不彻底。这样只需要在工程设立中增长一种宏定义ND_TOCURRENTVLBS_VERSION,接下来重新编译程序,然后直接把VC安装目录下的redis

5、t目录中需要的库以及相应的manifst文献拷贝到执行程序同目录下,这样程序到任何机器上都可以正常运营了。顺便提一下,如果不想在发布程序时带上这些库和manifes文献(如果没有必要的话),那么可以采用静态编译CRT和MF,然后把maifet文献添加到资源中,这样编译出的程序只要一种exe就可以在任何机器上直接运营了。参照文章:1、“应用程序配备不对的,程序无法启动”的解决措施资料收集:有的时候,你在sul +上面通过好几种月的辛勤努力,终于将程序编写完毕并且测试完毕,然而当你试图在客户的发布机上运营刚写好的程序时,有也许会遇到类似下面的错误,操作系统告诉你“由于应用程序配备不对的,应用程序未

6、能启动。重新安装应用程序也许会纠正这个问题”:一般状况下,这个问题都是由于程序不能找到所需要的C运营库(CT)而引起的。在WinwsXP S2后来,indows引入了Side-by-Side执行的概念,这个概念本来是.NE提出来的,但是Windws后来将这个概念集成到操作系统层面上来了。人们都应当懂得Dll ell的问题,为理解决Dll Hel的问题,SideBy-Side提出不同版本的l文献可以同步存在于同一种系统里面,并且依赖于不同版本l的应用程序在运营的时候可以使用到它当时被编译生成的dl。前面的话,有点绕,举个例子:1. 假定你编写了一种C+程序A,是使用MF 8.(这个版本是随着Vi

7、ual Studio )发布的。.之后你的机器升级了Visual Studio的版本,从升级到,的MF库是9.版本的,这个时候你的操作系统里面安装了两个版本的M,分别是8.0和9.0。3 你在Vsua tudi编写了此外一种+程序B,B依赖与MFC 9。4. 如果你运营程序的话,操作系统会将FC .加载到的进程里面。5. 如果你这时同步运营程序B,操作系统会将MC 9.0加载到的进程里面。这就是id-bysid的执行概念。操作系统之因此可以这样做,是由于它在加载程序和B之前,除了查看PE格式里面A和所依赖的Dll信息,都会查看A和B的manifest文献。Mnifest文献保存了iows可执行

8、文献(涉及exe和dl文献)要运营起来的环境设立信息,文献名一般是可执行文献的文献全名加上maifes。例如otepad.exe的maniet文献就应当是notepadex.manie。例外有的程序将 nifes文献直接嵌入到可执行文献的资源里面了,这也就是为什么有的时候你看不到程序的manifet文献的因素。一般来说,一种 anifest文献的内容如下(esexemanifst文献): securiy questePrivleges /scritypendcy edentAssemydeeency上面的例子里面,就阐明这个程序依赖于CRT 90,并且是调试版的,CPU架构是2位的CU。对于将

9、maifest文献嵌入到资源文献的程序我们也有措施看到manifet的信息。1. 一种是使用mt.ee(VisualStudo自带的ais解决程序):t-inputresorc:es.x;#1 /ot:te.manest2. 此外一种是使用dumpn程序将整个exe的内容打印到一种文献,然后用文本编辑器打开,搜索Assem字符串样式就能找到manifest信息:解决方案懂得了程序依赖于具体哪一种dll后来,你可以将所依赖的l拷贝到程序的安装文献夹里面,以CRT库绑定失败为例,简介解决环节:. 从上例中我们懂得程序依赖的icrost.VC9.DebugCT库,版本号是9.0022.,需要32位机

10、器版本的CRT。这个依赖项一般是由于你的程序是调试版,因此Vsu Studi在编译的时候,将调试版的CR加入程序的依赖项。2. 从isualStudio的安装文献夹里面将D:”Pgra ile”MicoVsual Sudio 9.0VC”edist”Debg_onRst”x86中的Microoft.VC90.ebuCRT整个文献夹拷贝到应用程序所在的文献夹里面,注意:) 如果你的程序依赖的是32位的CR,则要拷贝6文献夹里面的Mirsoft.VC90DbugCR文献夹,如果是先64程序,则要拷贝4文献夹里面。b)你需要拟定Microsoft.C90.DeugCRT文献夹里面的Mirosoft.

11、VC90buT.aniest文献里面保存的版本信息而你程序依赖的版本信息匹配,Micrsof.C90.DebuT.anft里面的版本信息大版本号一定要一致,小版本号一定要等于或者不小于你程序依赖的CR的小版本号。例如上例中,我们的程序是依赖于C.22.8,而我们的Miroft.VC90.DebugCR.maies的版本是9.0.3721,这样是可以的;而 .0.3729.就会有问题。如果大版本号同样,小版本号不一致的话,一种比较简朴的方案就是修改程序的maifest文献,使其互相匹配就可以了。3 如果你的程序不是依赖调试版本的CRT,而是reeas版本的CRT,直接去微软的官方网站下载一种ctrdst包安装上就可以了。=如果你编译了一种VC的默认的CRT/MF的应用程序,如果目的部署电脑上没有安装相应的C的动态库,当运营你的程序的时个,会浮现如下错误信息这是由于程序使用了基于的CT/FC的动态库版本解决这个问题,有三种措施:1使用静态链接库编译(缺陷,生成的xe的程序过于庞大)2.使用vedist_x86.ee / vrest_4exe 将VC的发行版的DLL安装在你的系统上(缺陷,只能支持发行版,调试版程序不能支持)3.将你的程序依赖的RMFC的动态库与你的程序一起发布(放在与你的发布程序同一目录中)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号