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.
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.
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.
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.