Ответы с форумов MSDN

Использование функций WinAPI в C# и C++

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, которые позволяют использовать их в приложениях на С++. Конечно, функции С++ также могут быть обертками над чем-то. 

Message 294

Date: 08.02.2019 3:09:01

"Я правильно понял?"

В целом правильно. Только объявления в заголовочных файлах С++ не ссылаются на конкретную DLL, а лишь описывают параметры функции и ее возвращаемое значение, а также указывают, что функция является внешней (т.е. что ее реализация находится в другом модуле). Ссылка на конкретную DLL задается уже путем передачи компоновщику библиотеки импорта для этой DLL (специального файла с расширением lib) через параметры командной строки или директивы #pragma, в случае Visual C++.

Message 293

Date: 08.02.2019 10:50:40

Lib-файл может быть как статической библиотекой, так и библиотекой импорта для DLL. На практике, конечно, чаще всего используется динамическое связывание. Библиотеки импорта для библиотек Windows, вроде user32.dll, поставляются с Windows SDK, для DirectX - с DirectX SDK. 


Message 292

Date: 08.02.2019 14:19:55

С Visual Studio в комплекте идет урезанная версия Windows SDK, которая содержит lib-файлы. С другими IDE ситуация может быть разной, например, CodeBlocks содержит часть lib-файлов Windows SDK (которые, правда, переименованы в расширение .a, но суть от этого не меняется, это абсолютно те же файлы). 

Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub