【问题标题】:remove dependency from "MSVCR90.dll"从“MSVCR90.dll”中删除依赖项
【发布时间】:2011-12-05 05:33:13
【问题描述】:

我有一个 dll abc.dll.但是当我在依赖 walker 中打开它时,我依赖于 MSVCR90.dll。 我想将项目的属性设置为这种类型,它应该独立于那个 dll。 怎么可能。我用的是vs2008。

【问题讨论】:

  • C++ 运行时是硬依赖,不能被移除。但是,您可以静态链接到 CRT 库(有一些注意事项)。见stackoverflow.com/questions/3230/…
  • 为每个 DLL 和 EXE 提供自己的 CRT 副本几乎从来都不是问题。除非您确切地知道后果是什么,否则不要这样做。

标签: visual-studio-2008 visual-c++ dll msvcr90.dll


【解决方案1】:

静态链接到 CRT (/MT)。 删除 msvcr90.dll 依赖项(基本上将 CRT 包含在您的 dll 中)。请注意,如果您的 dll 使用其他 dll,它们的依赖项可能会将 msvcr90.dll 和朋友拖进来。在这种情况下,您最好使用动态链接。

【讨论】:

  • 是的,你是对的。我认为其他 dll 使用 msvcr90.dll。但无论如何我必须从 msvcr90.dll 中删除依赖项。
  • 如果无法重新编译这些 dll,则无法删除其他 dll 依赖项。处理它的更好方法是在你的应用程序运行之前安装 vcredist 包(你会在你的 VC 安装中找到正确的版本)。
  • 在属性中,现在我使用了MFC静态链接。这个选项去掉了依赖,但是dll的大小增加了,很明显。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 2015-06-18
  • 2011-04-29
  • 1970-01-01
  • 2014-03-16
  • 2015-03-07
  • 2018-05-10
  • 1970-01-01
相关资源
最近更新 更多