begin process at 2012 02 10 17:52:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Problème de DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de DLL

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ée 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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,588 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales