Heim > Backend-Entwicklung > C++ > Wie kann ich „dllexport'/„dllimport' in gemeinsam genutzten Bibliotheken effektiv verarbeiten, ohne auf „COMPILING_DLL' angewiesen zu sein?

Wie kann ich „dllexport'/„dllimport' in gemeinsam genutzten Bibliotheken effektiv verarbeiten, ohne auf „COMPILING_DLL' angewiesen zu sein?

Linda Hamilton
Freigeben: 2024-11-30 21:23:14
Original
756 Leute haben es durchsucht

How Can I Effectively Handle `dllexport`/`dllimport` in Shared Libraries Without Relying on `COMPILING_DLL`?

Makro für dllexport/dllimport-Schalter

Bei der Arbeit mit gemeinsam genutzten Bibliotheken unter Windows ist die Definition der entsprechenden Makros für Export- und Importfunktionen erforderlich. Der traditionelle Ansatz beinhaltet die Verwendung des Makros COMPILING_DLL.

Definieren von COMPILING_DLL

Das Makro COMPILING_DLL ist normalerweise nicht explizit definiert und basiert auf dem Standardverhalten von Visual Studio. Standardmäßig gilt es beim Erstellen eines DLL-Projekts als definiert und bei Verwendung der DLL in einer Clientanwendung als undefiniert. Dieser Ansatz kann jedoch zu Problemen bei der Verwendung von Load-Time Dynamic Linking (LTDL) führen, da Sie nicht für beide Szenarien denselben Header verwenden können.

Alternative Lösung

Eine Alternative zur Verwendung von COMPILING_DLL besteht darin, ein lokal im Projekt definiertes Standardmakro zu verwenden. Standardmäßig definiert Visual Studio Makros wie MYDLL_EXPORTS und MYDLL_IMPORTS für das aktuelle Projekt. Diese Makros können wie folgt verwendet werden:

#ifdef  MYDLL_EXPORTS 
    /*Enabled as "export" while compiling the dll project*/
    #define DLLEXPORT __declspec(dllexport)  
#else
    /*Enabled as "import" in the Client side for using already created dll file*/
    #define DLLEXPORT __declspec(dllimport)  
#endif
Nach dem Login kopieren

In diesem Beispiel, in dem der Projektname „MyDLL“ lautet, wäre das Makro MYDLL_EXPORTS beim Erstellen des DLL-Projekts definiert und bei externer Verwendung undefiniert. Durch die Nutzung dieser Standardmakros können Sie das DLLEXPORT-Makro für beide Szenarien entsprechend definieren, ohne sich auf die Existenz von COMPILING_DLL verlassen zu müssen.

Das obige ist der detaillierte Inhalt vonWie kann ich „dllexport'/„dllimport' in gemeinsam genutzten Bibliotheken effektiv verarbeiten, ohne auf „COMPILING_DLL' angewiesen zu sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage