在 Visual Studio 中创建 dll 项目时附加依赖库的说明

问题描述

在 Visual Studio 中创建 dll 项目(在我的情况下为 2017)时,有很多库包含在其他依赖项中

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;

有什么地方描述为什么需要这么多吗?

解决方法

这些是与 Windows 交互的库。

有关它们的用途的更多详细信息,我建议您可以参考以下链接:https://stackoverflow.com/a/36018689/11872808

kernel32 :进程和线程管理、文件和设备 I/O、内存分配(保留这个,C 和 C++ 运行时库和编译器生成的代码使用它)

user32 :窗口和菜单管理(如果使用 GUI 则保留此项,控制台应用程序可以删除)基本的小部件集(= 预定义的窗口类,如按钮、复选框和滚动条)在这里。

gdi32 : 绘图(如果使用自定义渲染图形,请保留此项,如果仅使用小部件,则可以删除)

comctl32 :花哨的新小部件,例如树、列表视图和进度条

winspool :超出 GDI 范围的打印的高级用法。

comdlg32 :常见对话框,如打开和保存文件对话框

advapi32 :注册表支持、用户帐户和访问控制、加密。

shell32,shlwapi :任务栏和通知托盘 UI 以及更多辅助功能,例如预定义的文件夹和路径操作功能。

ole32,oleaut32 :OLE 是 ActiveX、DCOM 等的基础。许多较新的 OS API 都是 COM 对象。

uuid :高级 OLE 用法。

odbc32,odbccp32 :使用非常旧且不友好的 API 访问数据库。