XML-RPC C



  • Hallo,
    da ich die XML DB eXist ausprobieren wollte und man laut doku per XML-RPC darauf zugreifen kann/soll, habe ich nach ein bisschen Suche das hier gefunden:
    http://xmlrpc-c.sourceforge.net/

    Leider funktioniert das bauen auf Windows nicht, nach ca. einer halben stunde erhalte ich eine fehlermeldung (muss ich grad ma versuchen wieder zu machen).

    Auf der Seite steht auch was von vorkompilierten fertigen binaries, nur leider nirgendwo ein download link, oder bin ich blind?

    weil in den ganzen packages, die man bei "Tarballs" sieht, sind keine binaries



  • Steht nichts von fertigen Builds. Sondern:

    For Windows, it takes a little more imagination, but you can find instructions and tools in the Windows directory in the source package.

    Oder meinst du das:

    Pre-Built Distributions

    Many system packagers (OS suppliers) provide pre-built (binary) packages.

    Ich bezweifel, das MS in ihrem Windows diese lib fertig mit ausliefert. 😉 Hat



  • Artchi schrieb:

    Steht nichts von fertigen Builds. Sondern:

    For Windows, it takes a little more imagination, but you can find instructions and tools in the Windows directory in the source package.

    die leider nur für Visual Studio sind. Okay, erst mal Visual Studio und PSDK installieren 😑
    Geht dann leider auch nicht, da die einzelnen Projektdatenen angeblich beschädigt sind und daher nicht konvertiert/geöffnet werden können...

    hat einer das ding schon ma ans laufen gekriegt, oder ne alternative?

    Oder meinst du das:

    Pre-Built Distributions

    Many system packagers (OS suppliers) provide pre-built (binary) packages.

    Ich bezweifel, das MS in ihrem Windows diese lib fertig mit ausliefert. 😉 Hat

    Ja okay, hatte mich verlesen, dachte, es wären vorkompilierte binaries FÜR bestimmte betriebssysteme verfügbar.

    --edit--
    hab mittlerweile nochmal versucht zu bauen (im ordner c:\xml\xml2):
    configure klappte.
    make endete mit diesem fehler:

    [...]
    make[2]: Entering directory /c/xml/xml2/lib/libutil' ln -s /c/xml/xml2/lib/libutil/../.. srcdir ln: creating symbolic link \srcdir' to `/c/xml/xml2/lib/libutil/../..': No such file or directory
    make[2]: *** [srcdir] Error 1
    make[2]: Leaving directory /c/xml/xml2/lib/libutil' make[1]: *** [libutil/all] Error 2 make[1]: Leaving directory/c/xml/xml2/lib'
    make: *** [lib/all] Error 2



  • probier doch das: http://www.pocketsoap.com/pocketXMLRPC/
    🙂
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################
    ####################



  • das klingt natürlich schon recht interessant, nur wie benutz ich das in C++?



  • piXelshooter schrieb:

    das klingt natürlich schon recht interessant, darf man fragen, wie du das gefunden hast?

    ich hab' mal sowas ähnliches gebraucht und deine frage erinnerte mich daran, dass es expat und dergleichen gibt.
    🙂



  • das doofe: Soviel ich weiß gibt es COM objekte nur unter widows (wie dieses dings da), und ich find auch keine möglichkeit, COM objekte in C++ zu nutzen(zumal mir das auch nicht gerade performant erscheint, das ist aber nicht gerade wichtig)-



  • ich dachte das soll für windoofs sein? das zeug ist ja im quelltext, d.h. du kannst es dir nach belieben zurechtbasteln, ohne COM und so.
    wenn das zu frickelig erscheint, hier gibts noch mehr: http://www.xmlrpc.com/directory/1568/implementations
    🙂
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################
    ##############################



  • nojaa, es soll eig plattformunabhängig sein, aber es soll AUCH auf windows gehen.
    COM Objekte gehen nur auf windows, der ganze rest geht nur auf Unix.

    Zu deiner liste: Schick, hab mir mal alle C und C++ Implementationen angesehen, leider funktionierten einige Links nicht, und die projekte, die sonst noch erreichbar waren... das übliche. keine anpassung für windows, geht net.

    Würds ja versuchen selber zu machen, hab aber keine ahnung, was da alles in dem build mechanismus drin steckt.



  • piXelshooter schrieb:

    [...]
    make[2]: Entering directory /c/xml/xml2/lib/libutil' ln -s /c/xml/xml2/lib/libutil/../.. srcdir ln: creating symbolic link \srcdir' to `/c/xml/xml2/lib/libutil/../..': No such file or directory
    make[2]: *** [srcdir] Error 1
    make[2]: Leaving directory /c/xml/xml2/lib/libutil' make[1]: *** [libutil/all] Error 2 make[1]: Leaving directory/c/xml/xml2/lib'
    make: *** [lib/all] Error 2

    Die UNIX-makefiles dürften so natürlich nicht funktionieren. Was hast du denn für eine IDE? Code::Blocks kann MS Visual Studio Projekte importieren und diese dann mit dem MinGW übersetzen (auf gut glück natürlich).

    Mit dem MSVC übersetzte Biblioteken helfen dir ansonsten wenig wenn du mit einem anderen Compiler den rest erledigen möchtest.



  • piXelshooter schrieb:

    nojaa, es soll eig plattformunabhängig sein, aber es soll AUCH auf windows gehen.

    dann musst du wohl Java nehmen, da ist SOAP u.ä. schon eingebaut.

    falls es doch ein C-programm werden soll: http://xmlrpc-epi.sourceforge.net/
    das sieht eigentlich ganz überschaubar aus und dürfte leicht anzupassen sein.
    🙂



  • Mit dem MSVC übersetzte Biblioteken helfen dir ansonsten wenig wenn du mit einem anderen Compiler den rest erledigen möchtest.

    Das wäre dann noch schlimmer 😑

    darthdespotism schrieb:

    Die UNIX-makefiles dürften so natürlich nicht funktionieren.

    Gemerkt 😉

    Was hast du denn für eine IDE? Code::Blocks kann MS Visual Studio Projekte importieren und diese dann mit dem MinGW übersetzen (auf gut glück natürlich).

    Gleich ma ausprobieren... Ich arbeite auch sonst mit MinGW, allerdings in eclipse... gut dass ich noch C::B hab^^

    Hm okay, Importieren gibt eher ohne probleme, allerdings dann beim bauen EINIGE fehler (von denen einige offensichtlich syntaxfehler oder deklarationskonflikte sind, die man hätte sehen können, es sind aber nun mal SEHR viele, und einige konstruktionen versteh ich auch nicht, das zeug kann doch schon unter VS nicht laufen).

    Werde versuchen, mich da durch zu schlagen... hab aber eher wenig hoffnung 😕

    daher immer noch nicht richtig zufrieden...

    --edit--

    🙄 😕 schrieb:

    piXelshooter schrieb:

    nojaa, es soll eig plattformunabhängig sein, aber es soll AUCH auf windows gehen.

    dann musst du wohl Java nehmen, da ist SOAP u.ä. schon eingebaut.

    falls es doch ein C-programm werden soll: http://xmlrpc-epi.sourceforge.net/
    das sieht eigentlich ganz überschaubar aus und dürfte leicht anzupassen sein.
    🙂

    Ja, wenn ichs bauen könnte...
    Auch VS spuckt da fehler aus die ich mitunter nicht nachvollziehen kann, wie sie zustande kommen. Den Code korrigieren kann ich nicht, da ich z.T. nicht verstehe, wofür einzelne Fehlerzeilen gut sind.



  • piXelshooter schrieb:

    Ja, wenn ichs bauen könnte...

    wenn du die mitgelieferte xmlrpcepi.dsp mit vs2005 bauen willst, gibt es nur einen fehler (kann <iconv.h> nicht finden). das kann ja nicht soooo schwer sein.
    🙂



  • Ich habe vor einiger Zeit XmlRpc++ als client verwendet. Das hat mit VC++ recht gut funktioniert.

    Im ZIP-Archiv sind auch die Projektdateien zum Bauen drinnen.



  • Opps. Das habe ich ganz vergessen.

    XmlRpc++ benötigt keine weiteren Libraries! Andere Umsetzungen brauchen u.U. noch eine http-Lib oder einen XML-Parser wie expat.

    Was auch wichtig ist (zumindest für mich) ist die Lizenz. DIe Library steht unter der LGPL!



  • 😮 🙄 schrieb:

    piXelshooter schrieb:

    Ja, wenn ichs bauen könnte...

    wenn du die mitgelieferte xmlrpcepi.dsp mit vs2005 bauen willst, gibt es nur einen fehler (kann <iconv.h> nicht finden). das kann ja nicht soooo schwer sein.
    🙂

    Mit VS kann ich die Workspaces gar nicht mehr öffnen, da die Dateien angeblich beschädigt seien (Mehrfach neu heruntergeladen).
    Folgende Schritte habe ich versucht: Herunterladen, entpacken, windows/xmlrpc.dsw öffnen, Den "Konvertieren?" Dialog bestätigt, Fehlermeldung: "Das Projekt kann nicht geladen werden, da eine Projektdatei beschädigt ist" und das für jedes Projekt, sodass ich dann alle Projekte aus der Mappe entfernen lassen kann bzw. wenn ich sie drin lasse nicht benutzen kann.

    joede schrieb:

    Opps. Das habe ich ganz vergessen.

    XmlRpc++ benötigt keine weiteren Libraries! Andere Umsetzungen brauchen u.U. noch eine http-Lib oder einen XML-Parser wie expat.

    Was auch wichtig ist (zumindest für mich) ist die Lizenz. DIe Library steht unter der LGPL!

    Klingt natürlich schick!
    Hm... Hab das ganze jetzt einmal mit VC++05 EE versucht zu bauen:

    Visual C++ schrieb:

    ------ Erstellen gestartet: Projekt: xmlrpc, Konfiguration: Debug Win32 ------
    Kompilieren...
    XmlRpcSocket.cpp
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EAGAIN': nichtdeklarierter Bezeichner
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EINTR': nichtdeklarierter Bezeichner
    Browseinformationsdatei wird erstellt...
    Microsoft Browse Information Maintenance-Programm Version 8.00.50727
    Copyright (C) Microsoft Corporation. All rights reserved.
    Das Buildprotokoll wurde unter "file://c:\xml\xmlrpc++0.7\Debug\BuildLog.htm" gespeichert.
    xmlrpc - 2 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Dann noch mal mit MinGW und dem Beigelegten Makefile:

    MinGW schrieb:

    g++ -g -Wall -Wstrict-prototypes -O2 -I./src -c -o src/XmlRpcClient.o src/XmlR
    pcClient.cpp
    cc1plus.exe: warning: command line option "-Wstrict-prototypes" is valid for Ada
    /C/ObjC but not for C++
    g++ -g -Wall -Wstrict-prototypes -O2 -I./src -c -o src/XmlRpcDispatch.o src/Xm
    lRpcDispatch.cpp
    cc1plus.exe: warning: command line option "-Wstrict-prototypes" is valid for Ada
    /C/ObjC but not for C++
    src/XmlRpcDispatch.cpp: In member function void XmlRpc::XmlRpcDispatch::work(do uble)': src/XmlRpcDispatch.cpp:85: error:fd_set' undeclared (first use this function)
    src/XmlRpcDispatch.cpp:85: error: (Each undeclared identifier is reported only o
    nce for each function it appears in.)
    src/XmlRpcDispatch.cpp:85: error: expected ;' before "inFd" src/XmlRpcDispatch.cpp:86: error:inFd' undeclared (first use this function)
    src/XmlRpcDispatch.cpp:86: error: `FD_ZERO' undeclared (first use this function)

    src/XmlRpcDispatch.cpp:87: error: outFd' undeclared (first use this function) src/XmlRpcDispatch.cpp:88: error:excFd' undeclared (first use this function)
    src/XmlRpcDispatch.cpp:94: error: FD_SET' undeclared (first use this function) src/XmlRpcDispatch.cpp:103: error:select' undeclared (first use this function)

    src/XmlRpcDispatch.cpp:128: error: `FD_ISSET' undeclared (first use this functio
    n)
    mingw32-make: *** [src/XmlRpcDispatch.o] Error 1

    --

    Bin ich ernsthaft so dumm dass ich es nicht schaffe solche Bibliotheken zu bauen?!



  • piXelshooter schrieb:

    Bin ich ernsthaft so dumm dass ich es nicht schaffe solche Bibliotheken zu bauen?!

    nee, nicht dumm. sowas ist allgemein 'ne blöde fummelei und man braucht erfahrung dafür. wieso muss es eigentlich ein C-programm sein? gerade auch im hinblick auf plattformunabhängigkeit gibt es bessere lösungen, die ganz nebenbei XML-RPC schon mitbringen.
    🙂



  • -->
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EAGAIN': nichtdeklarierter Bezeichner
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EINTR': nichtdeklarierter Bezeichner
    <--
    wenn das die einzigen fehler sind:

    #define EINTR (WSABASEERR+4) 
    #define EAGAIN (WSABASEERR+1002)
    

    🙂



  • fummel-freak schrieb:

    wieso muss es eigentlich ein C-programm sein? gerade auch im hinblick auf plattformunabhängigkeit gibt es bessere lösungen, die ganz nebenbei XML-RPC schon mitbringen.
    🙂

    Naja, weil ich nun mal die meiste Zeit in C++ programmiere, ich mich dort auch die meiste zeit nicht gerade in plattformen eingeschränkt sehe, da ich plattformübergreifende bibliotheken benutze, und ich mir dachte: Es gibt doch nicht gerade wenige Projekte, die in C/C++ umgesetzt werden, also gibt es doch auch sicher anwendbare Lösungen für dieses problem -- gibt es ja auch, nur recht halbherzig für windows wie mir scheint...

    Welches wären denn z.B. solche Lösungen? Java ist denk ich ma kein Problem, ne?^^

    socket-freak schrieb:

    -->
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EAGAIN': nichtdeklarierter Bezeichner
    .\src\XmlRpcSocket.cpp(61) : error C2065: 'EINTR': nichtdeklarierter Bezeichner
    <--
    wenn das die einzigen fehler sind:

    #define EINTR (WSABASEERR+4) 
    #define EAGAIN (WSABASEERR+1002)
    

    🙂

    Dankööö, damit konnt ichs zumindest schon mal mit VS erstellen... *freu* *dank*
    schritt 2 wär dann versuchen, es zu benutzen, und schritt 3 das ganze dann noch mal für MinGW kompilieren... will ja nicht ewig an disem ding hängen...

    für die fehlermeldungen mit MinGW weiß keiner ne lösung oder?

    werd mich aber mal in den nächsten tagen damit beschäftigen, hab jetzt einen hoffnungsschimmer 😃



  • piXelshooter schrieb:

    Naja, weil ich nun mal die meiste Zeit in C++ programmiere, ich mich dort auch die meiste zeit nicht gerade in plattformen eingeschränkt sehe, da ich plattformübergreifende bibliotheken benutze...

    plattformunabhängigkeit mit C++ programmen zu erreichen ist sehr aufwendig und im grunde genommen nur eine illusion. noch nicht mal einfache dinge wie 'cout' spielen da richtig mit (beim einen gehts so, beim anderen brauchste 'flush' oder 'endl', damit der text sofort erscheint). vieles ist einfach undefiniert oder unspezifiziert und lässt compiler- und library-herstellern zu viel spielraum.

    piXelshooter schrieb:

    Welches wären denn z.B. solche Lösungen? Java ist denk ich ma kein Problem, ne?^^

    ja daran dachte ich (wollt's nur nicht so direkt erwähnen, weil sonst die ganzen flame warriors gleich wieder auf der matte stehen). eventuell wäre python noch was, da weiss ich aber nicht, ob XML-RCP integriert ist.

    socket-freak schrieb:

    für die fehlermeldungen mit MinGW weiß keiner ne lösung oder?

    wenn's auch auf 'ner unix-box laufen soll, dann mach's nicht mit mingw, sondern nimm einen richtigen GCC unter unix (BSD in eine vmware-maschine rein und du hast 'ne prima unix-testumgebung). wer weiss, beim GCC unter unix geht der build vielleicht ohne fehler durch.
    🙂


Anmelden zum Antworten