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

来自http://tunps.com/vs2008-redistributing-error

这个比较标题党,关于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,将

9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">

改为

9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">

这样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

About tunpishuang

just 4 fun·····
This entry was posted in 未分类 and tagged . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>