Bonjour tout le monde,
Désolé : je suis entrain de bombarder le forum en ce moment, mais j'essaye de comprendre les Dlls and co en ce moment et n'étant pas informaticien de formation, je peux vous dire que certains passages sont relativement cotons.
Ici c'est plus une question de méthode qu'un réel problème.
Bon sur internet on trouve plein d'explications sur la conception de classe, l’héritage, les espaces nom and co...
Sur internet aussi on trouve aussi plein de tutoriels sur comment concevoir sa première Dll (que ce soit une classe ou une famille de fonctions) : ça je pense l'avoir compris, je défini DLLLAFAMILLE_EXPORTS dans mon préprocesseur et puis :
Là, sous ms visual, il me crée un .lib et un .dll et je peux utiliser par la suite (avec le .h) dans un nouveau projet où évidemment je ne déclarerai pas DLLLAFAMILLE_EXPORTS dans les préprocessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #pragma once #include <iostream> #ifdef DLLLAFAMILLE_EXPORTS #define StrategyImportExport __declspec(dllexport) #else #define StrategyImportExport __declspec(dllimport) #endif namespace NameSpaceA { class StrategyImportExport Mere { public: Mere(); ~Mere(); }; }
Jusqu'à là j'ai bon?
Sur internet ce que l'on trouve moins, c'est comment créer proprement un DLL à partir d'une famille de n classes (qui dépendent les unes des autres). Alors supposons que j'ai crée des classes qui obéissent à un diagramme suivant (le plus exhaustif qui soit) :
D'après vous, que vaut-il mieux faire :
- Créer une macro globale dans header le plus en amont : du coup ici dans classeMere et un autre dans classeTierse (est-ce qu'elle peu dans ce cas avoir le même nom) + création d'un proprocessus unique exporter chacune des classes que je souhaite en mettant un StrategyImportExport devant le nom de la classe?
- Créer un macro par classe (mais dont le nom change d'une classe à l'autre), associer à chacune d'une maccro un nom défini ou pas dans le pré-processus (en fonction que l'on souhaite l'exporter ou pas).
- Ou sinon une autre solution? Vous feriez quoi?
Merci d'avance pour vos conseils!
Partager