如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题

 

引用链接 http://blog.csdn.net/pizi0475/article/details/7790992

应用程序事件日志中:

“C:\windows\system32\test.exe”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。 请使用 sxstrace.exe 进行详细诊断。

出现这类问题,是由于VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下。

解决办法就是:使用vcredist_x86.exe再次分发程序。

下载地址:(http://download.microsoft.com/download/7/9/8/798325b7-8993-4ef9-9148-8db9ff4187fc/vcredist_x86.exe)

  1. 对解决方案来说,VS设置成debug版本和release版本是不一样的。关键在于打包的时候的manifest所制定的路径不同。
  2. 对于部署的程序,VS有两套方案,共享并行程序集和私有程序集部署方法,前者其实就是依赖的东西在目标机的windows\winsxs目录下,后者要求程序自带
  3. 编译程序的时候,主要设置在两个地方,第一个是项目的general配置里面的MFC,第二个是项目配置里面的C/C++下面的Code Generation里面的Runtime Library设置里面。如果你的程序在修改过之后还能编译的话,那就可以了。

今天在准备发布用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和你的程序捆绑安装。

最新文章

  1. Django中的QuerySet查询优化之select_related
  2. java 三个循环的优缺点
  3. aspx页面,中文乱码解决方案
  4. autofac 使用
  5. Mongoose学习参考文档——基础篇
  6. IsBackground的理解
  7. PHP开发环境配置
  8. 关于HADOOP HA 中DFSZKFC的理解
  9. HDU ACM 1071 The area 定积分计算
  10. 输出A打头的字符串
  11. IFrame跨域访问自定义高度
  12. String类的常见面试题(3)
  13. Java 通过getbean取出的类为什么要强转为接口类
  14. python并发编程(并发与并行,同步和异步,阻塞与非阻塞)
  15. 3.STM32复位系统
  16. [docker]docker4种网络最佳实战
  17. 51nod 1057 N的阶乘 (大数运算)
  18. java的跳转和重定向,加载显示层
  19. 经典的图像匹配算法----SIFT
  20. chrome扩展安装图文教程

热门文章

  1. spring与shiro的集成
  2. Hibernate HQL查询 插入 更新(update)实例
  3. MySQL数据库性能优化
  4. JAVA反射会降低你的程序性能吗?
  5. ASCII码、ISO8859-1、Unicode、GBK和UTF-8 的区别
  6. [.NET开发] NPOI导出
  7. Linux 替换^M字符 方法
  8. English trip -- Phonics 6 元音字母 u + Unit 5 B课 review
  9. Confluence 6 管理多目录
  10. Fair CodeForces - 987D (bfs)