Dllimport-Attribut

Definition - Was bedeutet das DllImport-Attribut?

Das DllImport-Attribut ist ein deklaratives Tag, das in C # verwendet wird, um eine Klassenmethode als in einer externen DLL (Dynamic Link Library) und nicht in einer .NET-Assembly definiert zu markieren.

Das DllImport-Attribut wird zur Laufzeit verwendet, um eine Funktion aufzurufen, die in eine externe DLL exportiert wurde, die mit nicht verwaltetem Code implementiert ist und außerhalb der Kontrolle der Common Language Runtime (CLR) ausgeführt wird. Es wird auch verwendet, um andere Informationen anzugeben, die beim Aufrufen der Funktion benötigt werden, z. B. Aufrufkonvention, Art der Konvertierung von Parametern, die zwischen verwaltetem und nicht verwaltetem Code übergeben werden usw. Daher wird es verwendet, um mit Code in nicht verwalteten und älteren Komponenten in Windows zusammenzuarbeiten DLLs und ist in C oder C ++ geschrieben.

DllImport ist hilfreich in Situationen, in denen die Funktionalität einer verwalteten Anwendung, deren Code von CLR ausgeführt wird, nur durch Zugriff auf und Wiederverwendung der Funktionalität der Win32-API (Application Programming Interface) und anderer benutzerdefinierter, nicht verwalteter Codes, die implementiert werden, erweitert werden kann in DLL. Dies kann Entwicklungsaufwand sparen und vorhandenen robusten und gut getesteten Code nutzen, ohne das Rad in einer verwalteten Anwendung neu zu erfinden. Es wird normalerweise benötigt, wenn DLLs verwendet werden, die nicht neu geschrieben werden können, aber geändert werden können.

Technische.me erklärt das DllImport-Attribut

Das DllImport-Attribut ist eine Deklarationsanweisung für die exportierte Funktion, die von der verwalteten Anwendung aufgerufen werden soll. Es kann nicht für eine Mitgliedsfunktion verwendet werden, für die eine Klasseninstanz erforderlich ist. Sie wird zur Entwurfszeit in eckigen Klammern vor der Deklaration der Methode angegeben, für die sie angewendet wird. Vor der Funktionsdeklaration muss die Zeichenfolge "extern" verwendet werden.

Beispielsweise kann das DllImport-Attribut in der Windows Forms-Anwendung verwendet werden, bei der es sich um eine verwaltete Anwendung handelt, mit der eine Methode einer Komponentenobjektmodellkomponente (deren Code nicht verwaltet wird) zum Ausführen einiger Berechnungen aufgerufen wird.

Es wurde entwickelt, um die herkömmlichen DLLs zu importieren, die ihre Funktionen mithilfe des ursprünglichen Windows-DLL-Exportmechanismus exportieren. Es ist nicht für die Verwendung von Code in verwalteten Assemblys (als DLL) vorgesehen, auf den direkt im Projekt der verwalteten Anwendung verwiesen werden kann.

Das DllImport-Attribut verwendet die InteropServices der CLR, die den Aufruf vom verwalteten Code zum nicht verwalteten Code ausführen. Es informiert den Compiler auch über den Ort der Implementierung der verwendeten Funktion. Wenn die nicht verwaltete Wrapper-Funktion mit diesem Attribut im verwalteten Code aufgerufen wird, sucht und lädt die CLR die erforderliche DLL. Es marshallt (konvertiert die Parameter gemäß der Spezifikation) und gibt den nicht verwalteten Code nach der Ausführung zusammen mit der ordnungsgemäßen Konvertierung der Parameter zurück.

Bei der Verwendung des DllImport-Attributs muss darauf geachtet werden, den korrekten Namen der DLL und der exportierten Funktion zu verwenden, da Tippfehler an Stellen auftreten können, an denen sie nicht leicht erkannt werden können.