gpt4 book ai didi

c++ - 为什么 MSVS 2010 MFC 项目依赖于 MSVS 2008 的 vcredist_x86.exe?

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:18 28 4
gpt4 key购买 nike

我在 MSVS 2010 中有一个 MFC 项目。当我编译它时,MSVS 生成包含以下行的 list 文件:

<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,尽管它实际上只使用 MSVS 2010 的 vcredist_x86.exe!

我试图关闭项目属性中的 list 生成。之后,我的应用程序开始只使用安装了 MSVS 2010 的 vcredist_x86.exe。但是一些控件(尤其是组合框)损坏并开始显示不正确。我猜这是因为 Windows 不再有 list 中的以下信息:

<assemblyIdentity language="*" publicKeyToken="6595b64144ccf1df"
processorArchitecture="x86" version="6.0.0.0"
name="Microsoft.Windows.Common-Controls" type="win32"/>
  1. 为什么 MSVS 会在 list 文件中写入错误版本的 CRT?
  2. 如何解决问题/使 MSVS 在 list 文件中写入正确版本的 CRT?

我想通了。我有一个对 libcurl.lib 的引用,它引用了在 MSVS 2008 中编译的 openssl 库...在使用正确版本的 openssl 重建 libcurl 后,对 crt 9.0 的引用从 list 文件中消失了。

最佳答案

发生这种情况的原因可能是项目属性中的平台工具集。

将其更改为 v100(我想现在它已设置为 v90),重新激活 list 生成和嵌入(Manifest Tool\Input and Output)并重建您的项目。

关于c++ - 为什么 MSVS 2010 MFC 项目依赖于 MSVS 2008 的 vcredist_x86.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39751116/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com