Problème de compilation

Problème de compilation - C++ - Programmation

Marsh Posté le 22-04-2004 à 16:46:30    

Bonjour,  
 
Je souhaite développer un parser avec xerces sous la technologie DOM, le tout programmer en C++ sous Dev-Cpp. J'ai suivi le tutorial de xerces, seulement impossible de compiler, il me génère une erreur dès l'initialisation. Voici une partie du code, il bug donc sur XMLPlatformUtil::Initialize().
 
D'après vous est-ce que ça peut venir d'une mauvaise configuration de ma part sous dev-cpp (au niveau de mon projet) ? Toutes les suggestions sont les bonnes. Par avance merci.
 
#include <iostream>
#include <stdlib.h>
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>
 
//using namespace std;
 
int main(int argc, char *argv[])
{
    FILE * fileOUT;
    DOMParser* parser;
 
     
  if (argc != 3) {
      printf("\nUtilisation XML2TXT <fichier XML> <fichier TXT>\n" );
      exit(0);
      }
  else {  
      if ((fileOUT = fopen(argv[2], "w+" )) != NULL)    
            printf("\n Début du parsing" );
                           
      else {
            printf("\n Problème d'ouverture du fichier destinataire" );
            exit(0);
            }
      }
       
  try{
        XMLPlatformUtils->Initialize();
    }
  catch (const XMLException& toCatch) {
    char* message = XMLString::transcode(toCatch.getMessage());
    cout << "Error during initialization! : \n"
         << message <<"\n" ;
    XMLString::release(&message);
    return 1;
    }

Reply

Marsh Posté le 22-04-2004 à 16:46:30   

Reply

Marsh Posté le 22-04-2004 à 16:49:59    

C'est quoi l'erreur à la compile?

Reply

Marsh Posté le 22-04-2004 à 16:52:10    

La voilà : E:\Programmation\Dev-Cpp\Projet\main.cpp
`XMLPlatformUtils' undeclared (first use this function)
parse error before `::' token
 
Je me susi trompé en recopiant, ce n'est pas XMLPlatformUtils->Initialize(); mais XMLPlatformUtils::Initailize()
 

Reply

Marsh Posté le 22-04-2004 à 19:50:50    

t'as peut-être oublier de linker Xercès... vérifie de ce côté!

Reply

Marsh Posté le 22-04-2004 à 22:53:28    

En fait, je crois aussi que c'est ça, mais je ne suis pas certain de la démarche à opérer pour linker avec une librairie sous dev-cpp.  
Dans le projet, j'ai déclaré le dossier qui contient les include, le dossier qui contient la lib, et la lib, mais je ne suis pas du tout certains que ce soit bien défini.
Alors si kelk1 maitrisait dev-cpp ca m'arrangerait beaucoup.
Merci

Reply

Marsh Posté le 23-04-2004 à 09:35:25    

dans le soptions du projet y a un onglets Additional Library dans lequel tu ajoute le chemin de ton lib.
Il n'a aucun besoin d'etre ajouter dans les ficheirs du projets.
 
Bref va relire le manuel de gcc ca t'aidera ...

Reply

Marsh Posté le 23-04-2004 à 09:47:16    

Oui ca je l'ai fais et j'ai bien rajouté l'option -lxerces... mais toujours rien !!!!! il ne me reconnait pas le prototype de la fonction ! je lache l'affaire, si kelk1 a réussi à faire fonctionner xerces sous dec-cpp je suis preneur, sinon je passe à tinyxml.

Reply

Marsh Posté le 23-04-2004 à 10:32:17    

pas -lxerces mais un truc du styel :
 
-L/mon/path/juska/xecres/lib

Reply

Marsh Posté le 23-04-2004 à 12:01:23    

si c'est une erreur de compilation, le link n'a rien à voir la dedans (ou alors le linker utilise ipot?)

Reply

Marsh Posté le 04-01-2005 à 19:27:16    

tout a fait d'accord avec SoWhatIn22
 
c'est pitet un pb d'espace de nom ...
 
essai de rajouter XERCES_CPP_NAMESPACE_USE par exemple après //using namespace std;
 
de plus XMLPlatformUtils n'est pas à déréférencer (mmmh ca fait beaucoup de 'é') et Initialize() est une fonction statique de cette dernière classe
 
remplace donc XMLPlatformUtils->Initialize();
par XMLPlatformUtils::Initialize();
 
[edit]ha ben dsl, vue la date de ce sujet, ma réponse sert pas à gd chose[/edit]


Message édité par nolock le 05-01-2005 à 16:59:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed