Date: 07.02.2019 17:43:16
Начать с того, что MessageBox.Show в терминах C# - это не "функция". Функциями в C# обычно называют определенные типы делегатов (например Func<T,TResult>). Скорее всего, вы имели в виду "методы".
В C# функции это обертки над низкоуровневыми Win 32 API(API)?
Метод MessageBox.Show действительно является оберткой над функцией WinAPI, как и многие другие методы .NET. Но, разумеется, не все, например Path.GetFileNameWithoutExtension реализован полностью в управляемом коде.
А C++ функции обернутые, напишите пример, а в заголовке Winreg.h функции это обертки над Win 32 API(API) или нет?
В файле winreg.h не "обертки", а объявления функций из WinAPI, которые позволяют использовать их в приложениях на С++. Конечно, функции С++ также могут быть обертками над чем-то.
Date: 08.02.2019 3:09:01
"Я правильно понял?"
В целом правильно. Только объявления в заголовочных файлах С++ не ссылаются на конкретную DLL, а лишь описывают параметры функции и ее возвращаемое значение, а также указывают, что функция является внешней (т.е. что ее реализация находится в другом модуле). Ссылка на конкретную DLL задается уже путем передачи компоновщику библиотеки импорта для этой DLL (специального файла с расширением lib) через параметры командной строки или директивы #pragma, в случае Visual C++.
Date: 08.02.2019 10:50:40
Lib-файл может быть как статической библиотекой, так и библиотекой импорта для DLL. На практике, конечно, чаще всего используется динамическое связывание. Библиотеки импорта для библиотек Windows, вроде user32.dll, поставляются с Windows SDK, для DirectX - с DirectX SDK.
Date: 08.02.2019 14:19:55
Автор: VadimTagil