我现在如何将哪些DLL作为C ++的一部分?

时间:2013-04-06 19:40:11

标签: c++ deployment dependencies

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

  • GDI32.DLL
  • OLEAUT32.DLL
  • IMM32.DLL
  • WINMM.DLL
  • KERNEL32.DLL
  • USER32.DLL
  • SHELL32.DLL
  • OLE32.DLL
  • ADVAPI32.DLL
  • WS2_32.DLL
  • MSVCP100.DLL
  • MSVCR100.DLL

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

编辑:请参阅Orbit中的Lightness Races关于分发Windows DLL的this回答

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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