Я обычно использую Win32 API в C# .NET. Но не объявлять все в одном приложении. Иногда обычно используется user32, иногда gdi32 ... Я думаю, что когда я объявляю все функции api, они используют много памяти. Каков наилучший способ использования API в .NET?DllImport vs LoadLibrary, что является лучшим способом?
ответ
Большая часть API Win32 доступна через управляемые абстракции. В противном случае объявите те, которые вам нужны, используя DllImport
.
LoadLibrary
действительно должен использоваться только там, где вы предоставили альтернативные функции, то есть ваше приложение может работать даже без этой конкретной функции API. Если функция API критически важна, использование DllImport
позволит загрузчику беспокоиться о существовании функции или нет.
LoadLibrary полезен, когда вы пишете код, который может использоваться в среде, которая может иметь или не иметь требуемую dll - например, у вас может быть программа, которая может использовать специальную криптографию dll, если она доступна, но он может работать без него. Использование DllImport потребует существования dll.
Как правило, это время, когда я заканчиваю использование LoadLibrary. – jussij
LoadLibrary также полезен для загрузки плагинов –