初步关于VS2005编译程序的理解与学习

开发 后端
这里介绍VS2005编译程序的理解与学习,今天开发时运行好的程序, 到了测试机器上就不能运行了, 而不是运行出错。 查找资料发现和WINXP、WIN2003中为解决ll hell而引入的manifest机制有关系。

随着时代的进步科技的发展Visual Studio 版本也快速的提升与升级,下面我就对升级前和升级后的VS2005编译程序,做一下自己的解析。希望能够对大家有帮助 它并没有强制程序使用manifest, 但到了VS2005中, 这已经改成必需的了, 而我们并没有按照需要进行相关的配置, 所以程序启动不了了。

根据目前的经验, VS2005编译的程序不能启动大致有两个原因, 下面简单介绍解决办法

1、在开发组的机器上(安装有VS2005)有时都不能启动

这一般是项目的文件被放在了fat/fat32分区上导致的, 解决方法是把它们都移动到ntfs分区上, 或者把“项目属性|Manifest Tool|General|Use FAT32 Work-around”设为yes。

2、开发组运行正常, 换到其它机器上就不行了

这一般就是系统dll(包括crt,mfc,atl等)没有正确配置导致的。 如果程序是release版, 那么很简单, 只要把“\SDK\v2。0\BootStrapper\Packages\vcredist_x86”下的"vcredist_x86。exe"拷贝到目标机器上运行即可, 这是以x86平台为例的, 如果你用的是别的cpu平台(amd64或ia64)把x86替换成相应的内容就可以了。
如果是debug版, 就复杂一些了, 首先要确定你需要的dll的版本, 绝大多数(注意:不是"所有")情况下它和编译器的版本相同, 通过VS2005的关于对话框就能看到。

确定版本后, 在开发组的机器上进入“%windir%\winsxs"文件夹(下面将以x86平台8.0.50727.762版本的debug crt为例进行说明), 拷贝以下文件到目标机器的相同位置即可: x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f文件夹下的所有文件Manifests文件夹下的x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat和x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.manifestPolicies\x86_policy.8.0.Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4文件夹下的8.0.50727.762.cat和 8.0.50727.762.policy

注意, 上面的操作只是在目标操作系统为winxp,win2003及以上时才需要的, 如果是win2000及以下的系统, 只要把第一个文件夹下的文件拷贝到system32中就行了。

附:msdn上有关vc应用程序部署的几片文章, 供参考

#t#Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies
Deployment Examples
以下是与这个问题相关的一些系统提示信息, 为了让碰到这些问题的人更容易搜到关于VS2005编译这篇文章, 我把它们列在这里.
参照的汇编没有安装在系统上
应用程序要求的组件版本同另一个活动的组件有冲突。
系统无法执行指定的程序
ERROR_SXS_ASSEMBLY_NOT_FOUND
14003
0x800736B3
The referenced assembly is not installed on your system.

责任编辑:chenqingxiang 来源: lrb456的专栏
相关推荐

2011-08-24 09:45:00

VS2005Luabindlua

2009-11-25 09:18:05

VS2005软件

2009-12-14 13:52:54

VS 2005程序

2009-12-10 13:40:03

VS2005程序

2009-12-01 09:30:45

2009-12-17 13:33:14

VS2005类

2009-12-11 09:34:14

VS2005程序

2009-12-16 15:49:58

VS 2008性能

2009-11-27 13:04:16

VS2005远程调试

2009-12-04 13:20:03

VS2005安装

2009-12-09 11:02:56

VS 2005 Tea

2009-11-26 15:10:08

VS2005资源

2009-12-10 13:47:06

VS2005应用程序

2009-11-25 16:45:46

VS2005软件

2009-12-11 16:21:48

VS 2008 Bet

2009-12-04 16:23:36

VS2005Team

2009-12-01 14:44:46

VS2005 PRO

2009-08-07 17:32:17

C#编译程序

2009-12-17 14:09:03

VS2005代码

2009-12-01 16:59:06

VS2005配置
点赞
收藏

51CTO技术栈公众号