Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1844 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Résolu] pure virtual method called

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] pure virtual method called

n°1832286
Olivier51
Posté le 29-12-2008 à 18:48:03  profilanswer
 

Salut,
j'ai un projet (Linux) comportant ces fichiers binaires :
- libmylib1.so
- libmylib2.so lié à libmylib1.so
- test1 lié à libmylib2.so
- test2 lié à libmylib2.so
 
Dans libmylib1.so, je définis :

class A {
 virtual bool Start() = 0;
};
 
class C : public A, public B { // Avec B ne définissant pas de méthode Start()
 virtual bool Start();
};


 
Dans libmylib2.so, je définis (mais ne redéfinis pas la méthode Start) :

class D : public C {
};
 
bool StartMyProject() {
 D* pMyD = new D();
 return pMyD->Start();
}


 
# test1 marche bien, appelle bien lors de l'appel de StartMyProject()
# Mais avec test2 j'ai le droit à l'erreur ci-dessous lorque j'appelle la méthode pMyD->Start() dans StartMyProject() :

pure virtual method called
terminate called without an active exception
Abandon


Pour test1 et test2, la librairie libmylib2.so est spécifié durant le link.
 
Resultat des dépendances :


olivier@olivier:~/Project/bin$ ldd test2
        linux-gate.so.1 =>  (0xffffe000)
        libmylib2.so => /usr/local/lib/libmylib2.so (0xb7ee6000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7dfb000)
        libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7dd6000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7dcb000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7c7e000)
        libmylib1.so => /usr/local/lib/libmylib1.so (0xb7c57000)
        /lib/ld-linux.so.2 (0xb7f22000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7c52000)
        libicui18n.so.38 => /usr/lib/libicui18n.so.38 (0xb7af7000)
        libicuuc.so.38 => /usr/lib/libicuuc.so.38 (0xb79d6000)
        libicudata.so.38 => /usr/lib/libicudata.so.38 (0xb6eff000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb6ee7000)
 
olivier@olivier:~/Project/bin$ ldd cmsclient_test
        linux-gate.so.1 =>  (0xffffe000)
        libmylib2.so => /usr/local/lib/libmylib2.so (0xb7f0c000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e21000)
        libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7dfc000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7df1000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7ca4000)
        libicuuc.so.38 => /usr/lib/libicuuc.so.38 (0xb7b83000)
        libmylib1.so => /usr/local/lib/libmylib1.so (0xb7b5b000)
        /lib/ld-linux.so.2 (0xb7f48000)
        libicudata.so.38 => /usr/lib/libicudata.so.38 (0xb7084000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7080000)
        libicui18n.so.38 => /usr/lib/libicui18n.so.38 (0xb6f25000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb6f0d000)
 
olivier@olivier:~/Project/lib$ nm libmylib2.so | grep Start
         U _ZN12C5StartEv
 
olivier@olivier:~/Project/lib$ nm libmylib1.so | grep Start
0001dab4 T _ZN12C5StartEv


 
Pas de warning lorsque je compile tous cela avec '-Wall' ...


Message édité par Olivier51 le 29-12-2008 à 22:19:51
mood
Publicité
Posté le 29-12-2008 à 18:48:03  profilanswer
 

n°1832307
Olivier51
Posté le 29-12-2008 à 21:45:34  profilanswer
 

Ah oui, j'ai oublié de préciser, mais j'ai également testé avec/sans les options '-g' et '-lefence' et ça change rien ...

n°1832312
Olivier51
Posté le 29-12-2008 à 22:19:13  profilanswer
 

... Pardon du dérangement, j'ai trouvé http://forum-images.hardware.fr/images/perso/cerveau%20afrojojo.gif, petit problème de namespace; j'avais deux classes qui portaient le meme nom avec bien sur une des classes qui n'implémentait pas ce qu'il fallait ...
 
http://forum-images.hardware.fr/images/perso/dawa_neowen.gif


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Résolu] pure virtual method called

 

Sujets relatifs
précision: template et inline[Résolu] Problème d'email selon son contenu
[RESOLU] Positionner l'ascenseur verticalvirtual dans une classe fille
virtual inline[Résolu] [VB.NET] Récupérer le code de sortie d'un service Windows
idées de projet pour collégiens très jeunes [résolu][Résolu] - [SQL] count(*) pour des attributs différents
[ Resolu ] Ma requete ne fonctionne qu'à moité ! Avez-vous une idée ?Delete avec Jointure [Résolu]
Plus de sujets relatifs à : [Résolu] pure virtual method called


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR