2011-04-09 6 views
1

hI,API CRT et WIN32

Je me demande sous windows où la bibliothèque CRT est utilisée. Dans chaque DLL formant l'API win32? Seulement par logiciel développé sous Visual Studio? En d'autres termes, est-ce que Windows OS exécute malloc, écrit/lit sur des fichiers, etc., en utilisant autre chose que CRT?

THanks

Répondre

2

Le moteur d'exécution C (en cas de Visual Studio 2010 msvcr100.dll) contient la mise en œuvre des fonctions de la bibliothèque standard C.

L'exécution C est implémentée de manière spécifique à la plate-forme et, dans le cas de Windows, elle utilise des fonctions de kernel32.dll (partie de l'API Win32) pour effectuer ses tâches.

Vous pouvez jeter un oeil sur les fonctions exportées et importées et les dépendances DLL en utilisant Dependency Walker.

1

Je n'ai aucune idée de ce que vous vouliez poser dans votre première question. À propos de la seconde cependant: CRT n'est pas spécifique à Windows mais VS spécifique. Vos programmes C que vous compilez avec VS utiliseront les DLL MSVCRTxx pour fournir (la plupart) des fonctions de bibliothèque C. À leur tour, les fonctions de la bibliothèque C utiliseront WINAPI pour faire des choses réelles. Le WINAPI est la dernière couche qui parle à l'OS.

D'autres compilateurs, tels que g ++ dans MINGW n'utiliseront pas les DLL MSVCRTxx mais auront les leurs. À la fin, cela utilisera également le WINAPI. Par exemple, malloc appellera probablement VirtualAlloc dans n'importe quelle implémentation.

+0

Ok mais dans le cas d'un soft C++ développé sous VS, pourquoi CRT est toujours nécessaire? Pourquoi l'implémentation de new n'utilise pas directement l'API win32 et VirtualAlloc? – Guillaume07

+0

peut-être il y a CRT et "CRT ++" lib ... – Guillaume07

+0

l'implémentation de new appelle VirtualAlloc. L'implémentation de new est contenue dans le runtime. –