代码之家  ›  专栏  ›  技术社区  ›  MuldeR

VS2017和Win7/XP上缺少“api-ms-win-core-rtlsupport-l1-2-0.dll”

  •  10
  • MuldeR  · 技术社区  · 8 年前

    在将我的一些程序从VS2015移植到VS2017后,我注意到二进制文件不再在Windows 7或Windows XP上运行,尽管它们 v141_xp 工具集。程序无法启动缺少的DLL api-ms-win-core-rtlsupport-l1-2-0.dll (注意 2.

    我很清楚那些 api-ms-win-* Redist\ucrt\DLLs 在Windows 10 SDK目录中),以及我的应用程序-只需重新分发 vcruntime140.dll msvcp140.dll api-ms-win-core-rtlsupport-l1-1-0.dll 在我的Windows SDK目录中,但是

    我还尝试通过以下方式在Windows 7(或XP)机器上安装VS2017可再发行软件包: VC_redist.x86.exe api ms win-* DLL进入“System32”目录。但是,再一次,只有 但是

    enter image description here

    enter image description here


    [编辑]

    /MD ). 如果我链接到“静态”运行时( /MT )我得到一个二进制文件 DLL依赖于UCRT,在Windows 7和XP上运行良好。


    [编辑#2]

    请参阅我的其他帖子(包括编辑)以了解混乱的解决方法:
    https://stackoverflow.com/a/45773325/1766377

    2 回复  |  直到 5 年前
        1
  •  7
  •   SSpoke    5 年前

    好的,这很有趣: 我的VS2017发现了一个新的更新。显然,这更新了我的VS2017 v15.2

    现在有了 VC\Redist\MSVC\14.11.25325 VC\Redist\MSVC\14.11.25415 vcruntime140.dll 存在于两个目录中。但是 更新的 版本(25415,右)与旧版本(25325,左)具有完全不同的依赖关系:

    enter image description here


    只有“新”版本具有Windows 7上缺少的依赖项。所以,我可以接受“旧”版本。但这意味着我被锁定在“旧”版本。这是否正常/预期???

    (顺便说一句:VS2017的两个DLL版本 更新的 比我最初从中拿走的 v15.2 )


    我刚刚注意到有一个 不易察觉的 VC\Redist\MSVC\14.11.25415 目录:25415目录的所有DLL文件位于另一个子文件夹中,该子文件夹名为 onecore ,另一个没有。显然,这意味着“较新”的DLL版本(具有 子文件夹)是


    M$在设计Redist目录结构方面做得很好 . 将“normal”和“onecore”可再发行版本号放在目录层次结构的同一级别上(而不是具有单独的 desktop 上的目录

    不*重新分发任何 */onecore/*

        2
  •  0
  •   catnip    8 年前

    在项目的属性页中,尝试将Windows SDK版本从10.0.15063.0更改为10.0.10240.0。我认为这将修复它,前提是在构建机器上安装了旧的SDK。另一种尝试是将平台工具集更改为v140\u xp。VS 2017然后使用VS 2015工具链构建,前提是安装了VS 2015。