Какова связь между Windows API и библиотекой времени выполнения C? - PullRequest
3 голосов
/ 08 января 2009

Какова связь между Windows API и библиотекой времени выполнения C?

Ответы [ 6 ]

6 голосов
/ 08 января 2009

В двух словах: Windows API содержит все функции, определенные специально для Windows. Библиотека времени выполнения C содержит все функции, требуемые стандартом C.

Физические библиотеки, которые реализуют эти функции, могут быть одним файлом (библиотекой), разделенными на две отдельные библиотеки или разделенными на множество библиотек, в зависимости от операционной системы и используемого вами API / службы.

Например, при создании файлов стандарт C включает функцию:

fopen

для открытия и создания файлов и т. Д., В то время как Win32 API (например) определяет функции, такие как:

CreateFile

для создания и управления файлами. Первая будет доступна везде, где доступна стандартная библиотека времени выполнения C, а вторая будет доступна только на компьютере Windows, который поддерживает Win32 API.

4 голосов
/ 08 января 2009

Win32 - совершенно другой зверь, чем ЭЛТ.

CRT - это то, что необходимо включить в ваш проект, когда вы используете функции / функции C или C ++ (такие как printf или cout).

Win32 - это набор библиотек, которые должны быть связаны с вашим проектом при использовании функций Windows (например, GetWindowText).

4 голосов
/ 08 января 2009

Если вы имеете в виду стандартную библиотеку C (я полагаю, msvcrt.dll). Тогда совсем немного. Большая часть Windows API реализована в отдельных библиотеках (большая часть в user32.dll или kernel32.dll). На самом деле, некоторые из этих функций в Windows API являются просто тонкими обертками вокруг системных вызовов, где фактическая работа выполняется в самом ядре.

Кроме того, как сказал ocdecio , вполне разумно предположить, что некоторые части стандартной библиотеки C реализованы с использованием Windows API. А для некоторых случаев, таких как манипуляции со строками, наоборот.

РЕДАКТИРОВАТЬ: поскольку вопрос о том, какие библиотеки реализованы в терминах других, уже под вопросом, я проверил их с зависимостью, и вот мои выводы:

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.

1 голос
/ 08 января 2009

Какие они есть:

  • Windows API - это API, экспортируемый операционной системой Microsoft Windows [TM]
  • Библиотека времени выполнения C - это «стандартная библиотека», которая поставляется вместе с компилятором C поставщиком компилятора и которая доступна в любой операционной системе (например, Unix), для которой предназначен компилятор

Каковы их отношения:

  • Они различны, но оба одинаково доступны для приложений C ++, работающих в Windows
  • В Windows стандартная библиотека C реализована путем вызова базового API Windows (для выделения памяти, открытия файлов и т. Д.).
0 голосов
/ 08 января 2009

C библиотека времени выполнения основана на Windows API

0 голосов
/ 08 января 2009

Системные вызовы Unix аналогичны Windows API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...