• 运行错误:应用程序无法启动因为并行配置不正确。the application has failed to start because its side-by-side configuration is incorrect 解决方法


    问题描述:

                    当电脑同时安装VS2008和VS2008 SP1时,编译出来的Visual C++程序的manifest 文件会默认引用VS2008的MFC版本和CRT版本。如下:

      <dependency>

        <dependentAssembly>

          <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />

        </dependentAssembly>

      </dependency>

      <dependency>

        <dependentAssembly>

          <assemblyIdentity type='win32' name='Microsoft.VC90.MFC' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />

        </dependentAssembly>

      </dependency>

    说明本程序需要引用版本号为9.0.21022.8的MFC库和运行时库。

    但是程序可能编译时引用的却是VS2008 SP1的MFC库和运行时库,其版本号为:9.0.30729.6161.

    (具体以电脑上的安装版本为准,Release版路径在:C:Program Files (x86)Microsoft Visual Studio 9.0VC edistx86  )

    所以程序运行时其实际依赖的是9.0.30729.6161  MFC库,但是却查找的是9.0.21022.8版本的MFC库. 如果程序用到了9.0.21022.8版本的MFC库里没有的功能。 就会报错。

    解决方法:

    因为vc++应用程序运行时搜索库文件默认会先搜索C盘下库文件,再搜索本地文件夹下的MFC库。 所以需要如下解决方式:

    方法1:给项目开始的头文件里加上宏,使之只能使用9.0.30729.6161的MFC库。 (鉴于微软后续的更新可能会引起BUG, 不推荐此方法)

    方法2: 在应用程序的本地运行目录拷贝9.0.30729.6161版本的MFC库,但是将其manifest 版本改为9.0.21022.8;即:把C:Program Files (x86)Microsoft Visual Studio 9.0VC edistx86  目录下的Microsoft.VC90.MFC和Microsoft.VC90.CRT文件夹(具体看是否被程序引用)拷到应用程序目录。再将manifest文件中的版本号修改为9.0.21022.8。

  • 相关阅读:
    构建之法读书笔记04
    团队冲刺06
    12.23——周总
    团队冲刺05
    团队冲刺04
    用户场景分析
    团队冲刺03
    返回一个二维数组中最大联通子数组的和
    团队冲刺02
    FFT/NTT基础题总结
  • 原文地址:https://www.cnblogs.com/bolddream/p/6606738.html
Copyright © 2020-2023  润新知