【问题标题】:How to set the required version of C++ redistributables如何设置所需的 C++ 可再发行组件版本
【发布时间】:2021-12-30 11:33:01
【问题描述】:

我根据一个已有数年历史的示例项目创建了一个 dll。 我正在构建 dll,并且可以在我的计算机上成功注册此 dll,该计算机同时安装了 2010 和 2015-2019 C++ 可再发行组件。 当我尝试在仅安装 2015-2019 c++ 可再发行组件的计算机上安装相同的 dll 时,注册失败。在该机器上安装 2010 c++ 可再发行组件后,dll 安装成功。 我希望能够在仅安装 2015-2019 可再发行组件的计算机上注册此 dll。我认为这与我在 Visual Studio 2019 中构建的项目的配置有关。我已经浏览了所有属性,但没有任何突出之处。非常感谢有人指出我正确的方向!

更新:我所指的示例随 Windows sdk 一起提供,可以在此处找到:C:\Users\user\Source\Repos\Windows-classic-samples\Samples\Win7Samples\winui\shell\appshellintegration\RecipeThumbnailProvider 当我在 Visual Studio 2019 中打开它时,它进行了某种更新,但似乎没有影响它所依赖的可再发行组件。

【问题讨论】:

  • 它依赖于用于构建程序的Platform Toolset。见Determining Which DLLs to Redistribute
  • @RichardCritten 我读过这篇文章,但我很困惑,因为它说:“我们只支持使用与您的工具集版本相同或更新的可再发行包。”这是否意味着如果我的 dll 想要 2010 可再发行组件,它应该与 2015-2019 版本一起使用,因为它是较新的?构建时我可以在哪里设置我的“平台工具集”?
  • "...构建时在哪里可以设置我的“平台工具集”?..." 项目(不是解决方案)属性 > 配置属性 > 常规 > 平台工具集
  • @RichardCritten 谢谢,它正在显示“Visual Studio 2019 (v142)”,这似乎是我想要的......关于为什么它似乎需要安装 2010 可再发行组件的任何其他想法?
  • 如果有的话,您是否有任何预构建的组件,请使用 Dependency Walker(注意它有一段时间没有更新,并且可能会给出令人困惑的输出)来检查他们需要什么。

标签: c++ visual-studio visual-c++ visual-studio-2019 redistributable


【解决方案1】:

这最终与我使用 JNI 并且依赖于 jvm.dll 的事实有关。我使用的是 Java 8u202 中的 jvm.dll。此版本的 dll 依赖于 2010 C++ Redistributables。从 Java 8u261 开始,jvm.dll 依赖于 2017 Redistributables (source)。

Dependency Walker 已过时,但这个较新的工具 Dependencies 可用于我的 dll。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2019-03-30
    • 2020-09-05
    • 1970-01-01
    • 2012-02-21
    • 2021-04-26
    相关资源
    最近更新 更多