C++ und xerces - Probleme beim komplieren

Dieses Thema im Forum "C/C++" wurde erstellt von Damm.O, 26.06.2008.

  1. Damm.O

    Damm.O Grünschnabel

    Dabei seit:
    26.06.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,

    ich bin gerade dabei C++ zu lernen und dachte eigentlich es würde ganz gut laufen - bis heute :( Nach einem langen Marathon habe ich es geschafft, Xerces 2.8 zu installieren und die Samples zu bauen :)

    Nun habe ich einen Sample-Code mit dem ich eine XML-Daten parsen können sollte

    Code:
    #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>
    
    #include <iostream.h>
    
    XERCES_CPP_NAMESPACE_USE
    
    int main (int argc, char* args[]) {
    
        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;
            }
    
            XercesDOMParser* parser = new XercesDOMParser();
            parser->setValidationScheme(XercesDOMParser::Val_Always);    
            parser->setDoNamespaces(true);    // optional
    
            ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
            parser->setErrorHandler(errHandler);
    
            char* xmlFile = "x1.xml";
    
            try {
                parser->parse(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const DOMException& toCatch) {
                char* message = XMLString::transcode(toCatch.msg);
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            delete parser;
            delete errHandler;
            return 0;
        }
    
    diese Datei (parser.cpp) versuche ich mit dem Befehl
    Code:
    g++ -ansi -pedantic -o Parser parser.cpp
    
    zu bauen und bekomme die folgenden Fehler

    Code:
    In Datei, eingefügt von /usr/include/c++/4.1.3/backward/iostream.h:31,
                     von parser.cpp:7:
    /usr/include/c++/4.1.3/backward/backward_warning.h:32:2: Warnung: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
    parser.cpp:58:6: Warnung: Kein Newline am Dateiende
    /tmp/ccKJ4U1L.o: In function `main':
    parser.cpp:(.text+0x85): undefined reference to `xercesc_2_7::XMLUni::fgXercescDefaultLocale'
    parser.cpp:(.text+0xad): undefined reference to `xercesc_2_7::XMLPlatformUtils::Initialize(char const*, char const*, xercesc_2_7::PanicHandler*, xercesc_2_7::MemoryManager*, bool)'
    parser.cpp:(.text+0xb9): undefined reference to `xercesc_2_7::XMemory::operator new(unsigned int)'
    parser.cpp:(.text+0xc1): undefined reference to `xercesc_2_7::XMLPlatformUtils::fgMemoryManager'
    
    
    und noch jede Menge mehr. Ich habe schon wie verrückt gegoogelt, konnte aber leider nichts entsprechendes finden :(

    Kann mir vielleicht jemand helfen?

    Vielen Dank,
    Oliver
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 26.06.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ich vermute mal, das du beim Bauen auch noch den Pfad zu deiner Xerces-Installation angeben musst.

    Sprich, du musst dem Compiler + Linker ja auch sagen, wo er die Header / libraries findet...
     
  4. espo

    espo On the dark side

    Dabei seit:
    17.05.2003
    Beiträge:
    391
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Mal ein schnell Schuss
    Code:
    g++ parser.cpp -o parser -L ../pfad/zu/xerces/lib -lxerces-c -I ../pfad/zu/xerces/include
    
    Oder mal testen ob es tut wenn du LD_LIBRARY_PATH gesetzt hast.

    greetings
     
  5. Damm.O

    Damm.O Grünschnabel

    Dabei seit:
    26.06.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Und der geht direkt ins Schwarze!! Also muss ich alle includes so einbinden? Das ist aber unschön, die Alternativer hiesse dann wohl makefile?

    Vielen Dank!!
     
  6. #5 bitmuncher, 26.06.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Sofern die xerces-lib über die Distro installiert ist, sollte ld und somit g++ diese selbstständig finden. Wichtig ist dann nur, dass du dem Compiler mitteilst, dass du diese Lib einbinden willst und der dafür notwendige Parameter ist '-lxerces-c'. Der Aufruf

    Code:
    g++ -ansi -pedantic -lxerces-c -o Parser parser.cpp
    sollte eigentlich reichen.
     
Thema:

C++ und xerces - Probleme beim komplieren

Die Seite wird geladen...

C++ und xerces - Probleme beim komplieren - Ähnliche Themen

  1. xerces

    xerces: weiss jemand wie man den xerces-c benutzt? ilja
  2. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  3. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  4. Forscher analysieren Durchsatzprobleme im Linux-Scheduler

    Forscher analysieren Durchsatzprobleme im Linux-Scheduler: Eine Gruppe von Forschern hat Fälle identifiziert, in denen der Scheduler im Linux-Kernel falsche Entscheidungen trifft und die CPUs nicht so gut...
  5. München: LiMux als Sündenbock für IT-Probleme?

    München: LiMux als Sündenbock für IT-Probleme?: Im Münchner Stadtrat soll später in diesem Jahr erneut über den Einsatz von Linux in der Stadtverwaltung diskutiert werden. Die Grünen vermuten,...