none
不同ucrt版本的发布dll在哪里? RRS feed

  • 问题

  • 装了vs2015之后,ucrt有好几个版本,在C:\Program Files (x86)\Windows Kits\10下的include目录和lib目录,都包含了:

    10.0.10150.0

    10.0.10240.0

    10.0.10586.0

    10.0.14393.0

    这几个版本的头文件和库文件,但是在redist下面,只有一套dll。看dll的文件属性,版本是10.0.14393.33的。其它几个版本的dll呢?

    因为编译的时候选择的是“Visual Studio 2015 - Windows XP (v140_xp)”,固定(只能)用的是10.0.10240.0版本ucrt。之前,编译32位程序的时候,我已经不知道从哪里找到了以前10240版本的dll了(可能vs2015以前的版本ucrt没升级吧),现在vs2015 update3找不到老的ucrt
    的redist dll了。

    2017年1月5日 8:36

全部回复

  • Hi Heroboy_ywq,

    感谢在MSDN论坛发帖。

    >>这几个版本的头文件和库文件,但是在redist下面,只有一套dll。看dll的文件属性,版本是10.0.14393.33的。其它几个版本的dll呢?

    这些是Windows SDK的版本。UCRT现在作为Windows组件的一部分和Windows SDK一起安装。你可以在项目属性中设置。

    而redist目录下面装的是VC++ Redistribute package中的DLL。 这些DLL的版本必须与用于创建应用程序的Visual Studio工具集的版本相匹配。所以只能有一个。

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月6日 1:39
  • 首先呢,根据https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ 下面跟新的部分Updated September 11, 2015:  App-local deployment of the Universal CRT is supported. 所以,这些dll其实是可以单独部署的。

    UCRT现在作为Windows组件的一部分和Windows SDK一起安装。

    这句的意思是,要用户装windows sdk?xp能装的上最新的windows 10 sdk吗?

    第二呢,我上面说了我选的是“Visual Studio 2015 - Windows XP (v140_xp)”,你可以试试看把你的“Platform Toolset”设置一下,上面的这个下拉列表就不一样了。 根据VC++ Dictorories里include目录看,用的是10240的ucrt。

    而redist目录下面装的是VC++ Redistribute package中的DLL。

    这些DLL的版本必须与用于创建应用程序的Visual Studio工具集的版本相匹配。所以只能有一个。

    第三,工具集明明提供了那么多版本的ucrt的头文件和库文件,却没有相应版本的dll,怎么能说是匹配呢? 当然提供ucrt开发环境的不是visual studio,是windows 10 sdk(千万不要告诉我这里只提供visual c++的支持,windows 10 sdk的问题不提供支持啊,以前碰到过这样的问题了)。

    -----------------------------------------------

    补充一下,修改了“Platform Toolset”之后,要点一下Apply才能跟新上面"Target Platform Version"的下拉列表框。当然改成“xp”之后,你可以强制设置这个版本,但是include和lib的目录都会是“10.0.10240.0”这个版本的。

    2017年1月6日 7:16
  • 根据这篇文档 在Visual Studio 2015中,CRT已经重构为新的二进制文件。通用CRT(UCRT)包含由标准C99 CRT库导出的函数和全局变量。UCRT现在是Windows组件,作为Windows 10的一部分。用于UCRT的静态库,DLL导入库和头文件现在可以在Windows 10 SDK中找到。当你安装Visual C ++时,Visual Studio安装程序安装使用UCRT所需的Windows 10 SDK的子集。可以在Visual Studio 2015支持的任何版本的Windows上使用UCRT。可以使用vcredist为Windows 10以外的受支持版本的Windows重新分发它。

    具体如何单独部署Visual C++文件,可以参考以下文档。

    https://msdn.microsoft.com/en-us/library/ms235299.aspx

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月9日 8:16