CRT和WIN32 API

时间:2011-04-09 11:20:05

标签: c++ c windows

HI,

我想知道在使用CRT lib的Windows下。在每个dll中形成win32 API?只有在视觉工作室下开发的软件?

换句话说,Windows操作系统是否使用CRT之外的其他东西来执行malloc,写/读文件等等?

感谢

2 个答案:

答案 0 :(得分:2)

C运行时(如果是Visual Studio 2010 msvcr100.dll)包含C标准库函数的实现。

C运行时以特定于平台的方式实现,在Windows情况下,它使用kernel32.dll(Win32 API的一部分)中的函数来执行其任务。

您可以使用Dependency Walker查看导出和导入的函数以及DLL依赖项。

答案 1 :(得分:1)

我不知道你在第一个问题中想问什么。关于第二个:CRT不是特定于Windows的,而是特定于VS的。您使用VS编译的C程序将使用MSVCRTxx DLL来提供(大多数)C库函数。反过来,C库函数将使用WINAPI来做实际的事情。 WINAPI是与操作系统通信的最后一层。

其他编译器,例如MINGW中的g ++,不会使用MSVCRTxx DLL,而是拥有自己的编译器。最后,那也将使用WINAPI。例如,malloc很可能在任何实现中调用VirtualAlloc