Visual Studio中创建dll项目时附加依赖库的说明
Explanation on additional dependency libs when creating dll project in Visual Studio
在 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 交互的库。
关于它们的更多详细信息,我建议您可以参考link:
kernel32
:进程和线程管理,文件和设备I/O,内存分配(保留这个,C和C++运行时库和编译器生成的代码使用它)
user32
: Window 和菜单管理(如果使用 GUI 则保留这个,对于控制台应用程序可以删除)基本的小部件集(=预定义 window 类,像按钮、复选框和滚动条)都在这里。
gdi32
:绘图(如果使用自定义渲染图形,请保留此项,如果仅使用小部件,则可以删除)
comctl32
: 花哨的新小部件,如树、列表视图和进度条
winspool
: 超出 GDI 涵盖范围的打印高级用法。
comdlg32
: 常用对话框,如打开和保存文件对话框
advapi32
: 注册表支持、用户帐户和访问控制、密码学。
shell32, shlwapi
: 任务栏和通知托盘 UI 以及更多辅助功能,例如预定义的文件夹和路径操作功能。
ole32, oleaut32
: OLE 是 ActiveX、DCOM 等的基础。许多较新的 OS API 是 COM 对象。
uuid
: 高级 OLE 用法。
odbc32, odbccp32
: 使用非常陈旧且不友好的数据库访问 API.
在 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 交互的库。
关于它们的更多详细信息,我建议您可以参考link:
kernel32
:进程和线程管理,文件和设备I/O,内存分配(保留这个,C和C++运行时库和编译器生成的代码使用它)
user32
: Window 和菜单管理(如果使用 GUI 则保留这个,对于控制台应用程序可以删除)基本的小部件集(=预定义 window 类,像按钮、复选框和滚动条)都在这里。
gdi32
:绘图(如果使用自定义渲染图形,请保留此项,如果仅使用小部件,则可以删除)
comctl32
: 花哨的新小部件,如树、列表视图和进度条
winspool
: 超出 GDI 涵盖范围的打印高级用法。
comdlg32
: 常用对话框,如打开和保存文件对话框
advapi32
: 注册表支持、用户帐户和访问控制、密码学。
shell32, shlwapi
: 任务栏和通知托盘 UI 以及更多辅助功能,例如预定义的文件夹和路径操作功能。
ole32, oleaut32
: OLE 是 ActiveX、DCOM 等的基础。许多较新的 OS API 是 COM 对象。
uuid
: 高级 OLE 用法。
odbc32, odbccp32
: 使用非常陈旧且不友好的数据库访问 API.