简而言之:Windows API包含专门为Windows定义的所有功能.C运行时库包含标准C所需的所有函数.
实现这些功能的物理库可以是单个文件(库),可以拆分为两个单独的库,也可以拆分为多个库,具体取决于操作系统和您使用的实际API /服务.
例如,在创建文件时,C标准包括以下功能:
fopen
打开和创建文件等,而Win32 API(例如)定义如下函数:
CreateFile
创建和操作文件.第一个将在标准C运行时库可用的任何地方可用,而第二个只在支持Win32 API的Windows机器上可用.
如果您指的是标准 C 库(我假设是 msvcrt.dll)。然后一点也不多。大多数 Windows API 是在单独的 dll 中实现的(其中大部分在 user32.dll 或 kernel32.dll 中)。事实上,Windows API 中的一些函数只是系统调用的薄包装,实际工作在内核本身中完成。
此外,正如ocdecio所说,假设 C 标准库的某些部分是使用 Windows API 实现的,这是完全合理的。对于某些情况,如字符串操作,反之亦然。
编辑:由于哪些 dll 是根据其他人实现的已经成为问题,我已经检查了dependancy walker,这是我的发现:
kernel32.dll depends on:
ntdll.dll
user32.dll depends on:
gdi32.dll
kernel32
ntdll.dll
advapi.dll
msimg32.dll
powerprof.dll (this dll references msvcrt.dll for some string functions)
winsta.dll
msvcrt.dll depends on:
kernel32.dll (yes it does have imports for CreateFileA)
ntdll.dll
Run Code Online (Sandbox Code Playgroud)
基于此,我相信 msvcrt 是建立在 win32 API 之上的。