Exportation et importation de templates
Remonter à Spécificités du C++ - Index
La déclaration d'une fonction ou d'une classe template doit être suffisamment flexible pour être utilisée dans une DLL (bibliothèque liée dynamiquement et partagée) ou un fichier exécutable. La même déclaration de template doit être disponible en importation comme en exportation ou sans modificateur. Pour être complètement flexible, les déclarations de template du fichier en-tête ne doivent pas utiliser les modificateurs __export et __import. Cela permet d'appliquer le modificateur approprié au point d'instanciation selon la manière dont l'instanciation va être utilisée.
Les étapes suivantes illustrent la manière d'exporter et d'importer des templates. Le code source est organisé en trois fichiers. En utilisant le fichier en-tête, du code est généré dans la bibliothèque liée dynamiquement (DLL).
1. Déclarations de templates exportables/importables
Le fichier en-tête contient toutes les déclarations de classes et de fonctions template. Une version d'exportation/importation du template peut être instanciée en définissant la macro appropriée au moment de la compilation.
2. Compilation de templates exportables
Ecrivez le code source d'une bibliothèque liée dynamiquement. Une fois compilée, la bibliothèque a du code d'export réutilisable pour les templates.
3. Utilisation d'ImportTemplates
Il est maintenant possible d'écrire un appel de fonction utilisant des templates. Ce fichier exécutable est lié à la DLL. Seuls les objets non déclarés dans le fichier en-tête qui sont instanciés dans la fonction main provoquent la génération d'un code nouveau par le compilateur. Le code des objets nouvellement instanciés est écrit dans le fichier main.obj.