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