IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Pb DLL exception


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Par d�faut Pb DLL exception
    Bonjour,

    j'ai une classe exception dans une dl:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #ifdef __DLL__
    	#define IMPORT_EXPORT __declspec(dllexport)
    	#else
    	#define IMPORT_EXPORT __declspec(dllimport)
    	#endif
     
    IMPORT_EXPORT class itExcept{
    protected:
    	std::string TypeError;
    public:
    	itExcept(void);
    	itExcept(const char *_detail);
    	itExcept(const std::string & str);
    	itExcept(itExcept &except);
    	std::string detail;
    };
     
    itExcept::itExcept(void){detail="";}
    itExcept::itExcept(const char *_detail) {detail=_detail;}
    itExcept::itExcept(const std::string & _detail) {detail=_detail;}
    itExcept::itExcept(itExcept & ex) {detail=ex.detail;}
    et je teste ce truc dans une appli

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    try{
    	try{
    		try{
    			throw itExcept("Tes");
    		}
    		catch(itExcept &e)
    		{
    			ShowMessage(e.detail.c_str());
    			e.detail="TEST-----2";
    			throw e;
    		}
    	}catch(itExcept &e)
    	{
    		ShowMessage(e.detail.c_str());
    		e.detail="------------------------";
    		throw e;
    	}
    }catch(itExcept &e)
    {
    	ShowMessage(e.detail.c_str());
    }
    au deuxi�me throw "acces violation" et
    GETMEM.INC : mov ebx, TSmallBlockPoolHeader[edx].BlockType


    Si je fait exactement la m�me chose sans utiliser la dll �a marche.

    Si je ne modifie pas le e.detail dans le deuxi�me �a marche.
    Si je modifie e.detail et que la chaine est plus petite que la pr�c�dente �a marche

    j'utilise BDS2006

    Quelq'un une id�e?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Par d�faut
    mes avis que c'est � cause du std::string dans la dll. Si j'utilise la RTL dans la compilation de la DLL et du projet plus d'erreurs.
    Si je remplace string par char* plus de pb.

    Mais je ne comprends pas pourquoi je rencontre ce probl�me maintenant alors que d'autres classes utilisent des vecteurs et des string(en private).

    j'ai essay� de rendre detail priv� et de cr�er une fonction new_detail(const char *) m�me r�sultat.

    pas d'autre solution que d'utiliser la RTL? et de distribu� les fichiers associ�s(c'est chiant)?

Discussions similaires

  1. Windows CE 5 : fsdmgr.dll Exception
    Par Felfel dans le forum Windows Mobile
    R�ponses: 0
    Dernier message: 16/09/2010, 10h58
  2. R�ponses: 10
    Dernier message: 16/10/2007, 09h57
  3. [VC6 et MFC] Exception dans MFC42D.dll
    Par Philippe320 dans le forum MFC
    R�ponses: 8
    Dernier message: 09/12/2005, 14h14
  4. gestionnaire d'Exception dans DLL
    Par pirbd dans le forum Langage
    R�ponses: 2
    Dernier message: 03/03/2005, 18h58
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    R�ponses: 3
    Dernier message: 27/03/2003, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo