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

  FORUM HardWare.fr
  Programmation
  C++

  Plugin/QT pb de résolution de symboles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Plugin/QT pb de résolution de symboles

n°913073
nifnef
Posté le 02-12-2004 à 17:24:17  profilanswer
 

:bounce:  
crebondiou pourquoi ça marche pas!
 
je galère sur un probleme de résolution des symboles. Je ne sais absolument pas à quoi cela correspond!
je vous explique (du moins j'essaie). J'ai un programme qui lance un plugin.  
tout d'abord je charge le plugin et apres je le lance. Mais lors du chargement, le dlopen echoue.  
J'aimerai bien savoir pourquoi!
 
Précision.  
dans une premièere version ce plugin incluait des fichiers c++. La j'ai inclu des fichiers utilisant QT, j'ai mis les lib qui vont bien dans le makefile du repertoire de plugin mais voilà rien à faire je ne comprend pas!
 
 
Voici l'erreur envoyée par la console à l'execution (a la compil, no soucaï):
Trouvé : Plugins/ES_VRML.plg
erreur (renvoyé pas dlerror)Plugins/ES_VRML.plg: undefined symbol: _ZNK16EnsembleDePoints12nombrePointsEv
Bibliothèque non trouvée
(ça ne plante pas mais comme ma bibliothèque n'est pas trouvée, je ne peux rien faire)
 
Merci de m'éclairer de vos lumières!

mood
Publicité
Posté le 02-12-2004 à 17:24:17  profilanswer
 

n°913076
Lam's
Profil: bas.
Posté le 02-12-2004 à 17:27:48  profilanswer
 

Quel OS ?
Et ça donne quoi si tu fais un ldd sur ton plugin (je suppose que c'est une shared lib), et un ldd sur l'exécutable hôte ?

n°913097
nifnef
Posté le 02-12-2004 à 17:57:50  profilanswer
 

je travaille sous linux.  
je viens d'essayer ldd et je ne comprend rien...effectivement il y a une liste impressionnante de librairies mais à quoi ça sert?
ce ne sont que des librairies bas niveau
 
<console>
ldd  Plugins/ES_VRML.plg
                libdl.so.2 => /lib/tls/libdl.so.2 (0x40029000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4002d000)
        libm.so.6 => /lib/tls/libm.so.6 (0x400e7000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4010a000)
        libc.so.6 => /lib/tls/libc.so.6 (0x40113000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
<\console>
 
je fais quoi avec tout ca?

n°913099
nifnef
Posté le 02-12-2004 à 17:59:03  profilanswer
 

sur l'éxécutable c'est trop long pour le mettre ici mais si tu insistes...
no pb

n°913102
Lam's
Profil: bas.
Posté le 02-12-2004 à 18:00:52  profilanswer
 

Euh nan, donne moi juste le résultat de  
ldd ton-executable | grep libstdc

n°913106
nifnef
Posté le 02-12-2004 à 18:05:15  profilanswer
 

libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x408e3000)

n°913129
Lam's
Profil: bas.
Posté le 02-12-2004 à 18:23:14  profilanswer
 

Mais EnsembleDePoints, ça sort d'où ?  
 
Parce qu'à priori, je comprendrais que ça merdoie pour un dlsym, mais si dès le dlopen ça foire, c'est que quelque part, le post-linker (libdl en fait) s'attend à le trouver, mais ne le voit pas. Es-tu sûre de l'inclure dans ton plug-in ?  

n°913148
nifnef
Posté le 02-12-2004 à 18:40:33  profilanswer
 

EnsembleDePoints est inclu dans ES_VRML, il faisait partie de la première version qui marchait nickel:
<CODE>
#include <cstdlib>
#include <iostream>
 
#include <vector>
#include <string>
#include <fstream>
 
#include "forme.h"                 //
#include "constantes.h"            //
#include "polyligne.h"             //2ème version(la buggée)
#include "cercle.h"                //
#include "courbeBezier.h"          //
#include "courbeCardinalSpline.h"  //
#include "face.h"              /
#include "point3d.h"           / 1ère version qui marchait
#include "ensembleDePoints.h"  /
#include "ensembleDeFaces.h"   /
 
<\CODE>
 
j'ai revérifié le makefile du plugin et de l'executable, ensembleDePoints.h est bien inclu.
A part ça, pourquoi le dlsym devrait merdouiller?

n°913150
Lam's
Profil: bas.
Posté le 02-12-2004 à 18:42:33  profilanswer
 

Euh, le code se trouve seulement dans le .h ? Il n'y a pas de ensembleDePoints.cpp ou autres ?
 
Sinon, il n'y a pas de raisons que dlsym rate, mais si ça rate, c'est généralement l'endroit où on s'attend à trouver un problème de symbole non trouvé, et non pas au niveau du dlopen.

n°913155
nifnef
Posté le 02-12-2004 à 18:52:23  profilanswer
 

reste du code (en gros)
<CODE>
 
using namespace std;
 
 
static int sauver(char* chemin, char* vecteurChemin, char* vecteurSection, char* vecteurProfil)  
{}
 
static int sauverVRML(char* chemin, char* listePoints, char* listeFaces)  
{}
 
static int chargerVRML(char* chemin, char* listePoints, char* listeFaces)  
{}
 
static int charger(char* chemin, char* vectChemin, char* vectSection, char* vectProfil )
{}
 
extern "C"
char *query(void)  
{
  return "ES_VRML";
}
 
extern "C"
int run(char* arguments[])  
{
  ActionPluginVRML* action = (ActionPluginVRML*) arguments[0];
 
  switch(*action){
  case Sauver:
    sauver(arguments[1], arguments[2], arguments[3], arguments[4]);
    break;
  case SauverVRML:
    sauverVRML(arguments[1], arguments[2], arguments[3]);
    break;
     
  case Charger:
    charger(arguments[1], arguments[2], arguments[3], arguments[4]);
    break;
 
  case ChargerVRML:
    chargerVRML(arguments[1], arguments[2], arguments[3]);
    break;
  }
 
  return EXIT_SUCCESS;
}
 
<\CODE>
 
voilà...
bon je continue mes investigations. J'ai l'impression que le problème vient des Makefiles.
Merci beaucoup de m'avoir répondu ;)

mood
Publicité
Posté le 02-12-2004 à 18:52:23  profilanswer
 

n°913163
nifnef
Posté le 02-12-2004 à 19:04:57  profilanswer
 

si ca plante au dlopen et pas au dlsym c'est parce que je met le flag RTLD_NOW. Si je l'enleve et que ça plante dans le dlsym, j'ai une chance d'en savoir plus sur l'erreur?

n°913168
Lam's
Profil: bas.
Posté le 02-12-2004 à 19:08:41  profilanswer
 

Nifnef a écrit :

si ca plante au dlopen et pas au dlsym c'est parce que je met le flag RTLD_NOW. Si je l'enleve et que ça plante dans le dlsym, j'ai une chance d'en savoir plus sur l'erreur?


Probablement pas.
 
Mais tu n'as pas répondu à ma question: le code que tu as posté se trouve-t-il tout entier dans le .h ?

n°913171
Lam's
Profil: bas.
Posté le 02-12-2004 à 19:10:55  profilanswer
 

Ou plus simple, que donne:
nm Plugins/ES_VRML.plg | grep EnsembleDePoints

n°913203
nifnef
Posté le 02-12-2004 à 19:45:57  profilanswer
 

non, c'était le code .cpp du plugin pas de .h pour le pulgin.
sinon:
nm Plugins/ES_VRML.plg | grep EnsembleDePoints
donne:
 
  U _ZN16EnsembleDePoints12insererEnFinERK7Point3D
         U _ZN16EnsembleDePoints7effacerEv
         U _ZNK16EnsembleDePoints12nombrePointsEv
         U _ZNK16EnsembleDePoints12obtenirPointEi

n°913204
nifnef
Posté le 02-12-2004 à 19:46:48  profilanswer
 

tu as l'air d'y comprendre qq chose : je suis admirative!

n°913207
Lam's
Profil: bas.
Posté le 02-12-2004 à 19:48:48  profilanswer
 

U comme undefined, je rêve pas.
 
Il faut donc que tu compile ton .cpp, et que tu inclues dans ton plug-in le(s) .o généré(s). C'est ça qui manque.

n°913236
nifnef
Posté le 02-12-2004 à 20:19:16  profilanswer
 

dans le makefile de l'éxécutable, le .o du plugin est "remonté", ca revient pas au même que "descendre" les .o ?
 sinon je n'ai jamais inclu de .o dans un .cpp... je pense que je n'ai pas bien compris, tu veux bien réexpliquer?
missi

n°913592
el muchach​o
Comfortably Numb
Posté le 03-12-2004 à 10:34:46  profilanswer
 

Tu n'as pas l'air d'avoir compilé la classe EnsembleDePoints. C'est probablement une erreur dans le makefile.
Que veux-tu dire par "remonter" et "descendre" ?

n°914259
nifnef
Posté le 03-12-2004 à 20:51:31  profilanswer
 

Merci pour vos réponses... je n'ai pas trouvé le problème mais à force de reprendre mes sources de la version précédente, ben ça marche, c'est hyper frustrant! je ne saurai jamais d'où ça venait. (comme toi el muchacho et mon prof,je pense que ça venait du makefile...)
Remerci!
je suis éjà sur un nouveau bug..
mais celui là, je me le garde!
 
Allez bye les harders!  :p


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

  Plugin/QT pb de résolution de symboles

 

Sujets relatifs
figer la résolution de mes pagesEclipse CDT integration avec plugin UML
Eclipse, ajout pluginphp & image haute resolution (300 dpi)
attribution valeur d'une variable fonction de la resolution ecranplugin pour JSP sous eclipse 3
detect flash pluginDetecter la résolution du moniteur pour charger une page adaptée
recherche de pluginJBoss-IDE, plugin pour Eclipse
Plus de sujets relatifs à : Plugin/QT pb de résolution de symboles


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