Visual Studio 2015 默认附加库

4
在VS 2015中创建空项目时,默认将这些库添加到“附加依赖项”中:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

我不知道其中大多数的作用,它们可以被安全地删除吗?

3
可以吗?这可能不太可行。这些是根据项目类型添加的,具体原因不同。我建议保留它们。 - πάντα ῥεῖ
1
它们是操作系统的核心库,删除像 kernel32.lib 这样的库几乎肯定会导致链接器失败。无论如何,您不需要从中使用任何函数的任何库都不会进入生成的二进制文件的导入表中。 - Olipro
1
uuid.lib 是用于 GUID 的,GUID 用作计算机上任何东西(特别是 COM 对象)的全局唯一标识符。如果您不使用 COM 对象或生成 GUID 用作某些唯一的东西(例如临时文件的唯一名称),那么完全可以安全地删除它。uuid.lib 直到 2000 年才成为默认添加的内容,但当 COM 变得如此普遍时,VS 团队将其作为默认依赖项的一部分。 - David Lee
2个回答

14

其中许多可以安全地删除。以下是它们的快速概述:

  • kernel32:处理和线程管理、文件和设备I/O、内存分配(保留此项,C和C++运行时库以及编译器生成的代码使用它)。
  • user32:窗口和菜单管理(如果使用GUI,请保留此选项;对于控制台应用程序可以删除)。基本小部件集(预定义的窗口类,如按钮、复选框和滚动条)在这里。
  • gdi32:绘图(如果使用自定义渲染图形,请保留此选项;如果只使用小部件,则可删除)。
  • comctl32:新颖的小部件,如树、列表视图和进度条。
  • winspool:高级打印用法超出GDI covers之外。我总是删除它。
  • comdlg32:常见对话框,如打开和保存文件对话框。
  • advapi32:注册表支持、用户帐户和访问控制、加密。我通常最终需要此选项,您的需求可能有所不同。
  • shell32shlwapi:任务栏和通知区域UI以及更多助手函数,如预定义文件夹和路径操作函数。经常有用,但许多应用程序不需要它。
  • ole32oleaut32:OLE是ActiveX、DCOM等的基础。许多较新的操作系统API都是COM对象,因此您可能需要保留此选项。
  • uuid:高级OLE使用,可能不需要。
  • odbc32odbccp32:使用非常古老且不友好的API访问数据库。我总是删除这些。

斜体库不在默认列表中,但比其中一半更有用。


1
不,你不能删除它们。这些是与Windows进行接口的库。
你不需要担心它。.lib非常小,它们引用的.dll已经作为Windows安装的一部分存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接