"由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题"解决方法

本文介绍了在VS2008环境下使用C语言进行编程时遇到的应用程序配置错误问题及其解决方案。针对debug和release版本,详细说明了所需的运行库文件及版本配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。

这个比较标题党,关于vc部署的问题很多,以下介绍常碰到最频繁的情况。

首先我们辛辛苦苦的在vs2008上用c写好了代码,准备在其他机子上运行,结果报错:

“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”

首先我们来看看vs的版本,vs2008默认的版本是:9.0.21022.8,打了sp1的补丁是 9.0.30729.1。版本号可以通过vs菜单“帮助”-“关于Microsoft Visual Studio”中看到。
(vs2010的版本号是:10.0.30319.1)

我的机子上的vs是打过sp1的补丁,所以vs的版本号是9.0.30729.1。

接下来分两种情况来解决问题。

如果你编译的是debug版本的,进入vs安装目录/vc/redist/ ,会看到有两个目录

Debug_NonRedist 是debug非部署版,x86 是release版。

进入Debug_NonRedist/x86 ,有三个目录,看你的代码用了些什么,如果是只用了c runtime library,使用CRT,用了MFC使用MFC,OpenMP不知道是啥。

├─Microsoft.VC90.DebugCRT
├─Microsoft.VC90.DebugMFC
└─Microsoft.VC90.DebugOpenMP

我用的纯C代码,所以复制Microsoft.VC90.DebugCRT目录下的

Microsoft.VC90.DebugCRT.manifest
msvcm90d.dll
msvcp90d.dll
msvcr90d.dll

这3个dll,后面的d表示debug版本,msvc后面的m,p,r的解释是:

msvcr100.dll面向本机代码的 C 运行库 (CRT)。使用 C Run-Time Libraries的应用程序。
msvcm100.dll面向托管代码和混合代码 的 CRT 和标准 C++ 库。使用 C Run-Time Libraries或标准 C++ 库并 使用 /clr(公共语言运行 时编译)编译器选项的应用程序。
msvcp100.dll面向本机代码的标准 C++ 库。使用标准 C++ 库的 应用程序。

将这4个文件复制到程序同一个目录,然后用文本编辑器打开Microsoft.VC90.DebugCRT.manifest,将

<assemblyIdentity type=”win32″ name=”Microsoft.VC90.DebugCRT” version=”9.0.30729.4148” processorArchitecture=”x86″ publicKeyToken=”1fc8b3b9a1e18e3b”></assemblyIdentity>

改为

<assemblyIdentity type=”win32″ name=”Microsoft.VC90.DebugCRT” version=”9.0.21022.8” processorArchitecture=”x86″ publicKeyToken=”1fc8b3b9a1e18e3b”></assemblyIdentity>

这样debug版本的程序就可以运行了。

至于release版本的就更简单了,下载相应版本的vc++重新分发包安装就可以了。

参考:

Visual C++ 2010 中的部署 http://msdn.microsoft.com/zh-cn/library/dd293574.aspx

C Run-Time Libraries http://msdn.microsoft.com/en-us/library/abx4dbyh%28VS.80%29.aspx

原创文章,转载请注明: 转载自 TechGuru,作者:tunpishuang
本文链接地址: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
[VS2005]解决“由于应用程序配置正确应用程序未能启动重新安装应用程序可能会纠正这个问题” 今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序配置正确应用程序未能启动重新安装应用程序可能会纠正这个问题“,这个问题很让我意外,以前只出现过缺少DLL的情况,而这次出现这个问题,让我一时没办法。想想,无非是两个原因引起的,要么是他没有安装VS2005的原因,要么是我的程序里依赖了其它的一些库。于是百度一下,发现好多相关主题。我是按照这个帖子解决的: 在VS2005下用C++写的程序,在一台未安装VS2005的系统上, 用命令行方式运行,提示: “系统无法执行指定的程序” 直接双击运行,提示: “由于应用程序配置正确应用程序未能启动重新安装应用程序可能会纠正这个问题” 以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。 自己实验了一下,感觉以下几种解决办法是可行的: 方法一: 在类似C:\Program Files\Microsoft Visual Studio 8\VC\redi st\Debug_NonRedist\x86\Microsoft.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和你的程序捆绑安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值