運行錯誤:應用程序無法啟動因為並行配置不正確。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.0\VC\redist\x86  )

 

所以程序運行時其實際依賴的是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.0\VC\redist\x86  目錄下的Microsoft.VC90.MFC和Microsoft.VC90.CRT文件夾(具體看是否被程序引用)拷到應用程序目錄。再將manifest文件中的版本號修改為9.0.21022.8。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM