• 运行错误:应用程序无法启动因为并行配置不正确。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。

  • 相关阅读:
    Sqli Labs Less-21-31
    sqli labs Less-11-20
    基础知识补充及sqli-labs Less 5-10
    sqli-labs Less 2-4
    Sql简单的搜索语句及sqli-labs的less-1
    Sqli labs相关环境的下载与安装
    行内元素没有宽高,块级元素有宽高
    Webview上传文件的那些坑
    [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
    AndroidSupportDesign之TabLayout使用详解
  • 原文地址:https://www.cnblogs.com/bolddream/p/6606738.html
Copyright © 2020-2023  润新知