Exportation classe d'exécutable à dll
Question
J'ai besoin dans une DLL d'utiliser une classe définie dans un fichier exécutable (DLL et exécutables sont compilés par le même compilateur). Mais je ne veux pas le code source de cette définition de la classe d'être disponible pour DLL, seule déclaration.
Une façon possible de le faire est de faire toutes les méthodes de classe nécessaires pour être virtual
(de sorte que linker DLL n'a pas besoin de définitions de ces méthodes). Les inconvénients de cette approche:
- Je ne peux pas créer des objets de classes exportées
dans le code de DLL en utilisant
new
(a devoir créer des fonctions supplémentaires le code exécutable). - Je dois faire toutes ces méthodes
virtual
, même si sinon ils ne doivent pas nécessairement êtrevirtual
.
Il y a un moyen d'exporter une classe à partir d'une DLL à un exécutable en utilisant __declspec(dllexport)
Microsoft attribut étendu de stockage de classe.
Est-il possible d'exporter une classe d'exécutable à DLL en utilisant la même technique?
Mon ancien compilateur Borland C 6 ne me permet pas de créer la bibliothèque d'importation lors de la construction du projet exécutable. (Ainsi, lors de la compilation de la DLL, éditeur de liens me donne non résolues des messages d'erreur externe pour toutes les méthodes de classe non virtuels importés.) Est-ce une limitation de ce compilateur très, ou peut-être que je me manque quelque chose d'important?
La solution
Pour autant que je sache, il est autorisé à utiliser le dllexport MS VS pour exporter une classe ou fonction d'un exe et de l'utiliser dans une DLL. et il fonctionne à froid si votre DLL et exécuter Exe dans un processus .
Autres conseils
Vous pouvez mettre la classe dans une seconde DLL si vous ne voulais vraiment pas dans le premier.
Je vais avoir du mal à comprendre votre raisonnement pour non seulement mettre la classe dans la DLL si.