繁体   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