Question

À l'heure actuelle, nous avons un corps de code qui permet aux greffons de services qui offrent des formes de communication au noyau par exemple tcp / ip, udp / ip, usb, etc ... Ces plug-ins de services rétroaction notificateur instances de classe au cœur d'un traitement ultérieur .

Dans la mise en œuvre actuelle un projet de service (qui est une bibliothèque distincte liée dynamiquement apporté à l'exécution par le noyau via dlopen et amis) compile contre le fichier notifier.cpp qui réside dans le code source du noyau (un projet distinct) . Cela donne accès aux implémentations de la méthode de notifiants. Cela fonctionne parfaitement aucune plainte.

Deux options alternatives: 1. mettre les implémentations de la méthode notificateur dans le fichier d'en-tête. 2. déclarer les méthodes de notificateur virtuelle et obligatoire délai avant l'exécution.

Éviter les problèmes de temps de calcul quels sont les impacts de l'option 2?

Y at-il d'autres options disponibles pour nous?

Merci

Était-ce utile?

La solution

Oui, l'exposition d'une interface avec des fonctions virtuelles pures aux consommateurs est le moyen standard d'exposer des objets C ++ à partir d'une DLL Windows. Le client ne connaît pas tous les détails de mise en œuvre:. Pas de variables membres, pas de corps de la fonction membre, simplement mise en page virtuelle

(comptage Ajouter une référence et une version linguistique agnostique de dynamic_cast, que nous appellerons QueryInterface, et vous avez COM, qui est omniprésente sous Windows)

Cette technique fonctionne très bien sur les * nix bibliothèques partagées aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top