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.manifest
Policies/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应用程序部署的几片文章, 供参考
Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies:http://msdn2.microsoft.com/en-us/library/ms235342.aspx
Deployment Examples:http://msdn2.microsoft.com/en-us/library/ms235285(VS.80).aspx
以下是与这个问题相关的一些系统提示信息, 为了让碰到这些问题的人更容易搜到这篇文章, 我把它们列在这里.
参照的汇编没有安装在系统上
应用程序要求的组件版本同另一个活动的组件有冲突。
系统无法执行指定的程序
ERROR_SXS_ASSEMBLY_NOT_FOUND
14003
0x800736B3
The referenced assembly is not installed on your system
1、无法启动是因为计算机管理是本地组策略更改的计算机的设置。
2、解决办法:开始---运行(输入gpedit.msc)----确定或者回车。在打开的“本地组策略编辑器”窗口找到用户配置,点击用户配置前面的小三角。在“用户配置”的展开项中找到管理模板,点击管理模板前面的小三角。
3、在“管理模板”的展开项中找到系统,并用左键单击系统。用鼠标左键按住右边的滑块向下拉,找到“组策略”下的“不要运行指定的Windows应用程序”。
4、用鼠标左键双击“不要运行指定的Windows应用程序”,在d出的“不要运行指定的Windows应用程序”窗口点击已禁用,再点击确定,退出“本地组策略编辑器”。重启电脑即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)