在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
: Advanced OLE usage.
odbc32, odbccp32
:数据库访问使用一个非常旧的和不友好的API。