Windows API和C运行时库之间有什么关系?
答案 0 :(得分:6)
简而言之:Windows API包含专门为Windows定义的所有功能。 C运行时库包含标准C所需的所有函数。
实现这些功能的物理库可以是单个文件(库),可以拆分为两个独立的库,也可以拆分为多个库,具体取决于操作系统和您使用的实际API /服务。
例如,在创建文件时,C标准包含以下功能:
fopen
打开并创建文件等,而Win32 API(例如)定义了如下函数:
CreateFile
创建和操作文件。第一个可用于标准C运行时库,而第二个只能在支持Win32 API的Windows机器上使用。
答案 1 :(得分:4)
如果你的意思是标准的C库(我假设为msvcrt.dll)。然后一点也不。大多数Windows API都是在单独的dll中实现的(其中大部分是在user32.dll或kernel32.dll中)。实际上,Windows API中的某些功能只是系统调用的薄包装,其中实际工作是在内核中完成的。
此外,正如ocdecio所述,假设使用Windows API实现C标准库的某些部分是完全合理的。对于某些情况,如字符串操作,反之亦然。
编辑:由于哪些dll是以其他方式实现的,这已经成为问题,我已经检查了依赖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
基于此,我相信msvcrt是建立在win32 API之上的。
答案 2 :(得分:4)
Win32与CRT完全不同。
当您使用C或C ++函数/功能(例如printf或cout)时,需要将CRT链接到项目中。
Win32是一组在使用Windows功能(如GetWindowText)时需要链接到项目中的库。
答案 3 :(得分:1)
它们是什么:
他们的关系是什么:
答案 4 :(得分:0)
C运行时库基于Windows API
答案 5 :(得分:-2)
Unix系统调用与Windows API类似。