Это не только то, что ctypes.cdll.msvcrt
автоматически существует, но и ctypes.cdll.anything
автоматически существует и загружается при первом доступе, загружая anything.dll
. Таким образом, ctypes.cdll.msvcrt
загружает msvcrt.dll
, которая является библиотекой, которая поставляется как часть Windows. Это не среда выполнения C, с которой связывается Python, поэтому вам не следует вызывать malloc / free из msvcrt
.
Например, для Python 2.6 / 3.1 вы должны использовать ctypes.cdll.msvcr90
. Поскольку со временем это изменится, find_msvcrt()
даст вам имя библиотеки, которую вы действительно должны использовать (а затем загрузить через ctypes.CDLL
).
Вот названия нескольких разных версий Microsoft CRT, выпущенных в различные моменты в составе MSC, VC ++, SDK платформы или Windows: crtdll.dll, msvcrt.dll, msvcrt4.dll, msvcr70.dll , msvcr71.dll, msvcr80.dll, msvcr90.dll.