1

我已经在 Dependency Walker 中打开了我的程序。它显示了以下 DLL:

  • GDI32.DLL
  • OLEAUT32.DLL
  • IMM32.DLL
  • WINMM.DLL
  • 内核32.DLL
  • USER32.DLL
  • SHELL32.DLL
  • OLE32.DLL
  • ADVAPI32.DLL
  • WS2_32.DLL
  • MSVCP100.DLL
  • MSVCR100.DLL

所以我猜其中一半是 Windows 的一部分,另一半是 C++ 的一部分,对吧?找出哪些是操作系统的一部分而哪些不是的最佳方法是什么?

4

4 回答 4

2

不要打包您自己未明确添加到项目中的任何DLL。

阅读您的工具链(Visual Studio 或其他)的文档,了解您的包中是否需要包含任何可再发行组件。这些可能包括一些 DLL。

如果您不允许发布安装程序(微软产品的上述可再发行组件通常采用这种形式),那么您不应简单地手动转储 DLL。您应在发行说明中注明这些依赖项必须已安装在目标系统上。您使它们成为您的应用程序的先决条件

于 2013-04-06T19:55:48.483 回答
1

MSVCP100.dll 和 MSVCR100.dll 包含 C 和 C++ 的运行时库。列表中的其他所有内容都属于 Windows。确定 DLL 是否属于 Windows 的一种方法是查看它的路径 (c:\windows...),然后检查来自 MS 的数字签名。这不是万无一失的,但它会让您更接近确定 DLL 是否属于 Windows。

编辑:请参阅Lightness Races In Orbit 关于分发 Windows DLL 的答案

于 2013-04-06T19:49:00.953 回答
0

除了使用谷歌查找它们之外,可能没有简单的方法来判断。但是,在这种情况下,我可以告诉您这MSVCP100.DLL是 C++ 标准库代码,并且MSVCR100.DLL是 C 运行时库。

于 2013-04-06T19:45:28.403 回答
0

Dependency Walker 本身具有“已知系统 DLL”列表。您可以在选项 -> 配置模块搜索顺序菜单中找到它。

于 2013-04-06T19:52:45.310 回答