gpt4 book ai didi

c++ - 什么提供了 C/C++ 运行时库?

转载 作者:行者123 更新时间:2023-12-02 10:03:15 30 4
gpt4 key购买 nike

我对 Windows SDK 和平台工具集以及 C/C++ 运行时库有以下 2 个问题。

  • a) Windows SDK 与 C/C++ 运行时和平台工具集有什么关系?
    说 C++ 运行时库和平台工具集都是由 Windows SDK 提供的是否正确?
    由于我们主要从 Visual Studio 项目设置中处理平台工具集,因此想了解 Visual Studio 是否通过安装所需版本的 Windows SDK 来控制 C++ 运行时库和平台工具集版本?
  • b) 我想澄清的另一件事是,如果说一个版本的平台工具集可以与不同版本的 Windows SDK 一起使用是否正确,或者这些完全不相关?
    例如。在我的 Visual Studio 中,我看到“Windows SDK 版本”是 Windows 10,平台工具集是 v142。我可以将“Windows SDK 版本”设置为 Windows 8.1 并将工具集保持为 v142 吗?如果是,那是什么意思?

  • 这让我很困惑,我似乎无法从不同的人那里得到如此多不同的解释。

    最佳答案

    TL;DR: 如果您使用 Visual C++,并使用 Microsoft Docs 中的标准 REDIST 指令, 那么这些细节对你来说应该不重要。

    在 VS 2015 及更高版本中,“C/C++ 运行时”已被重构为三个部分:

  • UCRTBASE.DLL是操作系统的一部分,并通过 Windows 更新提供服务。 Visual C++ REDIST 包中包含它的“低级”版本,但通常您应该将其视为“操作系统”部分。这是“C 运行时”。这些 header 、导入库位于 Windows 10 SDK 中。你也可以在那里找到它的来源C:\Program Files (x86)\Windows Kits\10\Source\<version>\ucrt .
  • MSVCP*.DLL这是“C++ 运行时”库,基本上是 std::vector 之类的东西等。头文件、导入库等在 Visual C++ 产品中。您可以在 GitHub 上找到它的来源根据 this blog post .
  • VCRUNTIME*.DLL具有 Visual C++ 编译器语言功能在运行时所需的入口点。

  • 还有一些针对特定场景的辅助库:
  • VCCORLIB*.DLL用于C++/CX extensions (又名 /ZW )
  • VCAMP140.DLL用于C++ AMP
  • VCOMP140.DLL用于OpenMP
  • CONCRT*.DLL用于实现C++11 <thread>在 Windows XP 上(不用于较新版本的 Windows;如果需要,它会延迟加载)

  • this blog postthis one .

    本质上,C 运行时(UCRTBASE)部分是一个简单的 extern "C"接口(interface),因此 ABI 是明确定义的,因此可用于多个版本的 Visual C++ 甚至其他编译器。因此,您使用的 UCRT 的确切版本主要取决于您通过 WindowsTargetPlatformVersion 使用的操作系统和 Windows 10 SDK。 .您也可以根据 this blog applocal 部署 UCRT .

    C++ 运行时 (MSVCP*.DLL) 包括大量内联和公开的内存布局,并且历史上在 Visual C++ 版本之间存在重大变化。就是说,对于 VS 2015 Update 3、VS 2017 和 VS 2019,VC 团队在此处强调保持“二进制兼容”,这意味着如果您有一个使用来自 PlatformToolset 的 C++ std 命名空间组件的静态库。 v140/v141 的版本,它将成功地与更高版本的 Visual C++ 链接到 v142。目前尚不清楚这是否会在 future 保持不变,但对于每个 Microsoft Docs 的这组特定版本来说确实如此。 .
    VCRUNTIME*.DLL需要与您用于构建最终链接的 Visual C++ 编译器的版本相匹配,因此这非常适合您的 PlatformToolset .

    关于c++ - 什么提供了 C/C++ 运行时库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61499820/

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