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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 应用程序事件日志中:“C:\windows\system32\test.exe”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。

应用程序事件日志中:

“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再次分发程序。

  • 对解决方案来说,VS设置成debug版本和release版本是不一样的。关键在于打包的时候的manifest所制定的路径不同。
  • 对于部署的程序,VS有两套方案,共享并行程序集和私有程序集部署方法,前者其实就是依赖的东西在目标机的windows\winsxs目录下,后者要求程序自带

  • 编译程序的时候,主要设置在两个地方,第一个是项目的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和你的程序捆绑安装。

    相关实践学习
    基于Redis实现在线游戏积分排行榜
    本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
    目录
    相关文章
    |
    安全 Windows
    WindowsXP现在还能使用吗
    WindowsXP现在还能使用吗
    620 2
    |
    机器学习/深度学习 缓存 监控
    Pytorch学习笔记(7):优化器、学习率及调整策略、动量
    Pytorch学习笔记(7):优化器、学习率及调整策略、动量
    1703 0
    Pytorch学习笔记(7):优化器、学习率及调整策略、动量
    stm32f407探索者开发板(十九)——外部中断实验-EXIT
    stm32f407探索者开发板(十九)——外部中断实验-EXIT
    961 0
    |
    网络协议 JavaScript 前端开发
    Java一分钟之-GraalVM Native Image:构建原生可执行文件
    【6月更文挑战第13天】GraalVM Native Image是Java开发的创新技术,它将应用编译成独立的原生可执行文件,实现快速启动和低内存消耗,对微服务、桌面应用和嵌入式系统有重大影响。本文讨论了如何使用Native Image,包括常见挑战如反射与动态类加载、静态初始化问题和依赖冲突,并提供了解决方案和代码示例。通过合理规划和利用GraalVM工具,开发者可以克服这些问题,充分利用Native Image提升应用性能。
    581 5
    |
    11月前
    |
    传感器 监控 物联网
    基于STM32+微波雷达设计的非接触式睡眠监控系统
    本项目开发一种非接触式的睡眠监控系统,该系统利用先进的60GHz毫米波雷达技术和STM32微控制器,实现了对人体在睡眠过程中的存在感知、运动感知以及生理指标如呼吸频率、心率的实时监测。系统能够自动评估睡眠质量,并在用户睡眠周期结束时提供睡眠评分。为了确保用户能够在任何地点了解自己的睡眠状况,系统集成了Wi-Fi模块,可以将收集到的数据上传至华为云物联网平台,并通过专门设计的移动应用程序供用户远程访问。此外,系统还具备超阈值报警功能,当检测到异常的生理指标时会发出警报提醒。本地1.44寸TFT LCD显示屏用于实时显示监测到的信息,包括生理指标和环境数据。为了全面监测用户的健康状况,系统还加入了
    1365 1
    基于STM32+微波雷达设计的非接触式睡眠监控系统
    |
    安全 Java 数据库连接
    Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
    Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
    Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
    stm32f407探索者开发板(十四)——IO引脚复用和映射
    stm32f407探索者开发板(十四)——IO引脚复用和映射
    1356 0
    |
    网络协议 数据处理 调度
    深入探索Python异步编程:asyncio库的应用与实践
    在现代软件开发中,异步编程已成为处理并发和I/O密集型任务的重要策略。本文将带您深入探索Python的asyncio库,解析其背后的设计原理,并通过实例展示如何在实际项目中应用asyncio实现高效的异步编程。我们不仅会探讨asyncio的基本用法,还会分析其性能优势,并探讨其与其他并发模型的比较。此外,文章还将涵盖asyncio在Web开发、网络编程和数据处理等场景中的应用案例,帮助您更好地理解并掌握这一强大的异步编程工具。
    |
    SpringCloudAlibaba Dubbo 前端开发
    【三】SpringCloud Alibaba之Nacos整合篇(作为配置中心)
    【三】SpringCloud Alibaba之Nacos整合篇(作为配置中心)
    887 0