Importieren in eine Anwendung mithilfe von __declspec(dllimport)

Wenn ein Programm öffentliche, durch eine DLL definierte Symbole verwendet, wird dieser Vorgang als Importieren bezeichnet. Wenn Sie Headerdateien für Anwendungen erstellen, die Ihre DLLs zum Kompilieren verwenden, sollten Sie für die Deklarationen der öffentlichen Symbole __declspec(dllimport) verwenden. Das Schlüsselwort __declspec(dllimport) funktioniert unabhängig davon, ob Sie DEF-Dateien oder das Schlüsselwort __declspec(dllexport) für den Export verwenden.

Definieren Sie ein Makro für __declspec(dllimport), und verwenden Sie dieses zur Deklaration aller importierten Symbole, um den Code lesbarer zu gestalten:

#define DllImport   __declspec( dllimport )

DllImport int  j;
DllImport void func();

Die Verwendung von __declspec(dllimport) ist bei Funktionsdeklarationen optional, der Compiler generiert jedoch effizienteren Code, wenn Sie dieses Schlüsselwort verwenden. __declspec(dllimport) muss jedoch verwendet werden, damit die importierende ausführbare Datei auf die öffentlichen Datensymbole und Objekte der DLL zugreifen kann. Beachten Sie, dass die Benutzer Ihrer DLL noch eine Verknüpfung mit einer Importbibliothek herstellen müssen.

Sie können dieselbe Headerdatei sowohl für die DLL als auch für die Clientanwendung nutzen. Verwenden Sie zu diesem Zweck ein spezielles Präprozessorsymbol, das angibt, ob die DLL oder die Clientanwendung erstellt wird. Beispiel:

#ifdef _EXPORTING
   #define CLASS_DECLSPEC    __declspec(dllexport)
#else
   #define CLASS_DECLSPEC    __declspec(dllimport)
#endif

class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };

Wie möchten Sie vorgehen?

Worüber möchten Sie mehr erfahren?

Siehe auch

Importieren in eine Anwendung