簡體   English   中英

為什么MSVS 2010 MFC項目依賴於vcredist_x86.exe for MSVS 2008?

[英]Why does MSVS 2010 MFC project depend on vcredist_x86.exe for MSVS 2008?

我在MSVS 2010中有一個MFC項目。當我編譯它時,MSVS生成包含以下行的清單文件:

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

因此,我得到的二進制文件依賴於MSVS 2008的vcredist_x86.exe和MSVS 2010的vcredist_x86.exe,盡管它實際上僅使用vcredist_x86.exe來實現MSVS 2010!

我試圖在項目屬性中關閉清單生成。 之后,我的應用程序開始只使用vcredist_x86.exe安裝MSVS 2010。 但是一些控件(特別是組合框)破裂並開始錯誤顯示。 我想這是因為windows不再有來自清單的以下信息:

<assemblyIdentity language="*" publicKeyToken="6595b64144ccf1df"
    processorArchitecture="x86" version="6.0.0.0"
    name="Microsoft.Windows.Common-Controls" type="win32"/>
  1. 為什么MSVS在清單文件中寫入錯誤版本的CRT?
  2. 如何解決問題/使MSVS在清單文件中寫入正確版本的CRT?

我想到了。 我有一個對libcurl.lib的引用,它引用了在MSVS 2008中編譯的openssl庫...在使用適當版本的openssl重建libcurl之后,對清單文件的引用消失了。

可能這是因為項目屬性中的平台工具集。

將其更改為v100(我現在假設它設置為v90),重新激活清單生成和嵌入(Manifest Tool \\ Input and Output)並重建項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM