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:

  1. 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).
  2. Je dois faire toutes ces méthodes virtual, même si sinon ils ne doivent pas nécessairement être virtual.

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?

Était-ce utile?

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 .

scroll top