Oui, mais "quand", c'est là toute la question quand tu as des objets dont la durée de vie est variable... A un moment ou à un autre, tu vas demander la destruction de l'objet, soit via son container, soit directement.
Or, ça ou un delete, c'est kif-kif...
95% des gens ici confondent "portabilité" et "faire un truc qui compile sous Windows et Linux avec trois tonnes de compilation conditionnelle"...
Ceci étant dit, tu ne m'as pas dit si tu utilisais une couche d'abstraction éprouvée (genre ACE) ou pas.
Non, au contraire. Mais le but initial d'une DLL, c'est d'être partagée entre plusieurs processus (y compris et surtout en même temps).
Si ton code n'est jamais utilisé par plus d'un exécutable, ni plus d'un processus, sa présence en DLL n'est pas justifiée. De plus, dans le cas de routines relativement complexes et/ou qu'il ne faut pas recompiler n'importe comment (validation complexe, par exemple), il est alors au contraire primordial de mettre le code dans une DLL.
Mais étant donné que le simple fait d'exposer des classes C++, ou pire, des variables globales va à l'encontre du principe même d'une DLL (qui est de n'exporter QUE des fonctions, et exclusivement des fonctions), la réutilisabilité de la librairie (binaire) et sa portabilité sur d'autres applications / langages en est fortement réduite.
C'est simplement sur ce point que je conteste fortement l'export de classes dans une DLL. Si Microsoft fait le maximum possible pour n'exporter QUE des fonctions en prototype C dans ses librairies, c'est pour une bonne raison, et ce n'est pas "se casser la tête pour rien"...![]()
Partager