Wie kann ich Vorlagen ohne explizite Spezifikation aus einer DLL exportieren?

8

Ich habe eine DLL, die eine Vorlagenklasse enthält. Gibt es eine Möglichkeit, es ohne explizite Spezifikation zu exportieren?

    
Boyan 12.12.2008, 13:55
quelle

4 Antworten

12

Da sich der Code für Vorlagen normalerweise in Kopfzeilen befindet, müssen Sie die Funktionen überhaupt nicht exportieren. Das heißt, die Bibliothek, die die DLL verwendet, kann die Vorlage instanziieren.

Dies ist der einzige Weg, um Benutzern die Freiheit zu geben, jeden Typ mit der Vorlage zu verwenden, aber in gewissem Sinne funktioniert es gegen die Art, wie dlls funktionieren sollen.

    
James Hopkin 12.12.2008, 14:24
quelle
5

Möchten Sie eine Instanz einer Vorlagenklasse über eine DLL exportieren? Eine Klasse entlang der Linien:

%Vor%

Es gibt einige Diskussionen darüber, wie man das macht: Ссылка

Ein anderer Ansatz besteht darin, jede Funktion, an der Sie interessiert sind, explizit durch eine Wrapper-Klasse zu exportieren, die gegen diese Vorlageninstanz arbeitet. Dann werden Sie die DLL nicht mit mehr Symbolen durcheinander bringen, als Sie eigentlich verwenden möchten.

    
Laserallan 12.12.2008 14:35
quelle
3

Wenn der Compiler eine Instanz einer Template-Klasse wie MyTemplate & lt; int & gt; findet, generiert er den Code für die Template-Spezialisierung.
Aus diesem Grund muss der gesamte Template-Code in eine Header-Datei eingefügt und dort eingefügt werden, wo Sie ihn verwenden möchten.
Wenn Sie Ihre Vorlagenklasse exportieren möchten, platzieren Sie Ihren Code einfach in eine Headerdatei und fügen Sie sie dort ein, wo sie benötigt wird.

    
Paolo Tedesco 12.12.2008 14:27
quelle
0

In Ihrer Exportkontrolldatei.

%Vor%

Dabei ist XXXX_BUILD ein in Ihrem Projekt definiertes Symbol.

Um Ihre Klasse zu exportieren.

%Vor%

Dabei ist double der Typ, mit dem Sie die Klasse instanziieren möchten.

Ссылка

    
Peter Driscoll 24.09.2017 17:15
quelle

Tags und Links