Atributo dllimport

Definição - o que significa o atributo DllImport?

O atributo DllImport é uma marca declarativa usada em C # para marcar um método de classe como sendo definido em uma biblioteca de vínculo dinâmico (DLL) externa, em vez de em qualquer assembly .NET.

O atributo DllImport é usado em tempo de execução para chamar uma função exportada em uma DLL externa implementada com código não gerenciado que é executado fora do controle do common language runtime (CLR). Também é usado para especificar outras informações necessárias ao chamar a função, como convenção de chamada, tipo de conversão de parâmetros passados ​​entre código gerenciado e não gerenciado, etc. Portanto, é usado para interoperar com código em componentes não gerenciados e legados que residem no Windows DLLs e é escrito em C ou C ++.

DllImport é útil em situações em que a funcionalidade de um aplicativo gerenciado, cujo código é executado pelo CLR, pode ser estendida apenas acessando e reutilizando a funcionalidade da interface de programação de aplicativo (API) Win32 e outros códigos não gerenciados definidos pelo usuário que são implementados em DLL. Isso pode economizar esforço de desenvolvimento e fazer uso de código existente robusto e bem testado sem reinventar a roda em um aplicativo gerenciado. Geralmente, é necessário ao usar DLLs que não podem ser reescritas, mas podem ser modificadas.

Definirtec explica o atributo DllImport

O atributo DllImport é uma instrução de declaração para a função exportada a ser chamada do aplicativo gerenciado. Ele não pode ser usado para uma função de membro, que requer uma instância de classe. Ele é especificado em tempo de design entre colchetes antes da declaração do método para o qual é aplicado. É necessário usar a string “extern” antes da declaração da função.

Por exemplo, o atributo DllImport pode ser usado no aplicativo Windows Forms, que é um aplicativo gerenciado para invocar um método de um componente de modelo de objeto componente (cujo código não é gerenciado) para realizar alguns cálculos.

Ele foi projetado para importar as DLLs tradicionais que exportam suas funções usando o mecanismo de exportação de DLL original do Windows. Não se destina ao uso de código em assembly gerenciado (como DLL), que pode ser referenciado diretamente no projeto do aplicativo gerenciado.

O atributo DllImport usa o InteropServices do CLR, que executa a chamada do código gerenciado para o código não gerenciado. Também informa o compilador sobre a localização da implementação da função usada. Quando a função de wrapper não gerenciado com este atributo no código gerenciado é chamada, o CLR localiza e carrega a DLL necessária. Ele empacota (converte os parâmetros de acordo com a especificação) e retorna o código não gerenciado após a execução, junto com a conversão adequada de parâmetros.

Ao usar o atributo DllImport, é necessário tomar cuidado para usar o nome correto da DLL e da função exportada, pois erros de digitação podem ocorrer em locais onde não podem ser detectados facilmente.