Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de DLL [ Windows / Autre ] (aztcaLISS)

mardi 22 avril 2008 à 20:34:07 | Problème de DLL

aztcaLISS

Salut,

J'ai créé une DLL.
Dans cette DLL il y a une fonction qui me permet d'instancier une classe et de me retourner cette nouvelle instance comme ceci:
return new CClass;

Dans une application "exe", j'appel cette fonction pour récupérer la nouvelle instance de la classe. Tout fonctionne très bien et je peux utiliser parfaitement l'instance de la classe CClass.
Mon problème vient lorsque je veux détruire, avec delete, cette instance dans mon application "exe". Lorsque je fais le delete une erreur d'exeption survient.

Je veux savoir s'il est possible de faire un delete sur un objet qui a été créé dynamiquement à partir d'une DLL ou cet objet doit être détruit dans la DLL elle-même.

merci

azt

mardi 22 avril 2008 à 21:01:54 | Re : Problème de DLL

vecchio56

Administrateur CodeS-SourceS
Je ne sais pas répondre à ta question, mais si c'est ta DLL qui fait le new, c'est également elle qui devrait faire le delete

_____________________________________
Un éditeur de ressources gratuit pour Windows


mardi 22 avril 2008 à 21:28:38 | Re : Problème de DLL

juju12

en effet, ça doit être à cause de la CRT qui est dédoublée puisqu'il y a deux compilations séparées et indépendantes; du coup la gestion de la mémoire est effectuée indépendemment pour la dll et pour l'exe.


mardi 22 avril 2008 à 21:32:42 | Re : Problème de DLL

vecchio56

Administrateur CodeS-SourceS
Dans ce cas comment pourrait-il utiliser l'objet alloué dans la DLL depuis l'exe? Je pense de l'espace de mémoire est partagé, et donc le delete devrait fonctionner...
Mais dans tous les cas, je maintien que c'est pas logique de faire le delete dans l'exe

_____________________________________
Un éditeur de ressources gratuit pour Windows


mardi 22 avril 2008 à 22:37:37 | Re : Problème de DLL

aztcaLISS

J'ai cherché un peu, et j'ai tombé sur un tutorial qui fait la même procédure que moi:
http://dn.codegear.com/article/20165

J'ai moi aussi une classe de base. La classe de ma DLL hérite de cette classe de base.
Donc quand j'appelle ma fonction "CreateInstance" (fonction de la DLL), celle-ci me renvoie une nouvelle instance de la classe enfant.
Puisque l'exe connait la classe de base, je peux donc manipuler cette instance.
Ensuite quand j'ai terminé d'utiliser cet objet je le détruit avec delete.

Qu'est-ce que vous pensez de ce tutoriel?
Peut-être que mon erreur provient d'ailleur. Je pensais que ça aurait pu provenir du destructeur, mais il est vide.

azt

mercredi 23 avril 2008 à 21:44:15 | Re : Problème de DLL

juju12

vecchio : bien sûr, l'espace mémoire est le même (sinon on ne pourrait pas utiliser l'instance de classe du tout dans l'exe).
Mais je parlais des opérations annexes effectuées par new (sans savoir trop de quoi il s'agit d'ailleurs : peut-être le stockage de la taille allouée pour utilisation avec delete, ou un système de gestion de la mémoire pour optimiser les allocations...)

mercredi 23 avril 2008 à 22:44:08 | Re : Problème de DLL

aztcaLISS

Bon en fait, j'ai créé un nouvelle fonction dans la DLL qui permet de détruire les objets que je crer avec la DLL.

J'ai maintenant 2 fonctions dans ma DLL, une qui me crer une instance et une autre qui détruit l'instance en lui passant l'addresse de l'objet.
Ça fonctionne très bien.

azt




Cette discussion est classé dans : problème, dll, instance, classe, delete


Répondre à ce message

Sujets en rapport avec ce message

problème de copier-coller pour les .h des dll ? [ par ilimo ] bonjour,j'ai trois projets : P1 : dll : contient la classe aP2 : dll : contient la classe bP3 : exe : contient la classe c qui se sert d Problème de création de dll !! (C++ Builder) [ par SibosisITS ] J'ai la procédure d'entrée de la dll, j'ai écris mes fonctions, mais là ou je coince, c'est pour les arguments à mettre dans l'en-tête de mes fonction Resources dans DLL [ par jpeg ] J'ai un problème concernant des ressources contenues dans une DLL MFC. Par exemple, lorsque je fais appel à une boite de dialogue contenue dans cette Problème pour importer une DialogBox depuis une DLL [ par Kheo ] Afin de rendre mon soft skinable j'ai exporté toute les ressources de mon projet vers une DLL que j'imoprte au debut de mon logiciel avec un LoadLibra Passer une instance de classe dans une mémoire partagée ?? [ par vinvay ] Comment puis-je passer une instance de classe dans une shared memory, sachant que cette classe contient une structure. J'arrive, dans le deuxième prog Problème avec un dll de Borland [ par anaxode ] Je programme avec Borland 6 , mais lorsque je veux montrer mes petits programmes a mes amis ,quand je l'ai execute, une erreur CC3260M.Dll ce produit Un DLL pour transcoder [ par Pacifica ] J'ai un problème avec un logiciel de fax (faxil), il marche très bien sous win98 mais sous 2000 c'est autre chose.....Donc voila mon problème:Le fichi probleme creation dll de classe [ par juju cogne ] Voila j'ai codé une classe (.h et cpp) et je voudrais passer cette classe avec ses méthodes ainsi que les méthodes globales de cette application dans Problème de delete [ par ManTico ] Salut à tous, j'ai un peu de peine avec la gestion de la mémoire et je voulais savoir deux choses :- pourquoi en mode Debug mon prog plante sur les de pb classe new et delete [ par mat74 ] salut a ts j'ai encore un pb avec les classescomment je pourrai faire sa :class teste {public: int x; void augmenter() {x++;} void detruire(test


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.