J'ai une DLL et un programme, tous deux écrits avec Delphi 2007. Le programme passe une interface, qui descend de IInterface et n'a pas de GUID (donc pas de COM ici) à la DLL qui le stocke pour une utilisation ultérieure.Puis-je passer une interface (IInterface) à une DLL?
Cela semble fonctionner correctement mais parfois je reçois des violations d'accès lorsque le programme est fermé et la DLL est déchargée. Je ne suis pas sûr de la raison de ces AVs. Il est possible que l'interface soit hors de portée et que, par référence, l'objet sous-jacent, qui réside dans le contexte du programme, soit libéré, causant une corruption de mémoire car deux gestionnaires de mémoire différents sont impliqués.
Je n'utilise pas sharemem et je ne veux pas pour diverses raisons (l'une étant que d'autres programmes qui ne sont pas écrits en Delphi pourraient vouloir utiliser cette DLL).
Je sais que je ne devrais pas passer des chaînes, des tableaux ouverts et des objets de cette manière, mais les interfaces devraient-elles fonctionner?
Désolé, je voulais écrire GUID plutôt que GUI. Bien sûr, ne pas avoir une interface graphique ne m'empêche pas d'utiliser COM, mais j'ai des interfaces sans GUID. – dummzeuch
Ah, ça a plus de sens. J'ai mis à jour ma réponse en conséquence. –