在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)
我不知道其中大多数的作用,它们可以被安全地删除吗?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)
我不知道其中大多数的作用,它们可以被安全地删除吗?其中许多可以安全地删除。以下是它们的快速概述:
kernel32
:处理和线程管理、文件和设备I/O、内存分配(保留此项,C和C++运行时库以及编译器生成的代码使用它)。user32
:窗口和菜单管理(如果使用GUI,请保留此选项;对于控制台应用程序可以删除)。基本小部件集(预定义的窗口类,如按钮、复选框和滚动条)在这里。gdi32
:绘图(如果使用自定义渲染图形,请保留此选项;如果只使用小部件,则可删除)。comctl32
:新颖的小部件,如树、列表视图和进度条。winspool
:高级打印用法超出GDI covers之外。我总是删除它。comdlg32
:常见对话框,如打开和保存文件对话框。advapi32
:注册表支持、用户帐户和访问控制、加密。我通常最终需要此选项,您的需求可能有所不同。shell32
,shlwapi
:任务栏和通知区域UI以及更多助手函数,如预定义文件夹和路径操作函数。经常有用,但许多应用程序不需要它。ole32
,oleaut32
:OLE是ActiveX、DCOM等的基础。许多较新的操作系统API都是COM对象,因此您可能需要保留此选项。uuid
:高级OLE使用,可能不需要。odbc32
,odbccp32
:使用非常古老且不友好的API访问数据库。我总是删除这些。斜体库不在默认列表中,但比其中一半更有用。
kernel32.lib
这样的库几乎肯定会导致链接器失败。无论如何,您不需要从中使用任何函数的任何库都不会进入生成的二进制文件的导入表中。 - Olipro