Problem mit Library von Axis(C++)



  • Hallo, ich versuche gerade mit C++ auf den Webservice von Google zu zugreifen.
    Ich habe mir mit Hilfe des wsdl2ws Tools einen Stub erstellen lassen, doch ich kriege ihn nicht kompiliert!

    DirectoryCategory_Array.o(.text+0xd):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::Axis_Array()'
    DirectoryCategory_Array.o(.text+0x3b):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::Axis_Array()'
    DirectoryCategory_Array.o(.text+0x9f):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::Axis_Array()'
    DirectoryCategory_Array.o(.text+0xf5):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    DirectoryCategory_Array.o(.text+0x167):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::Axis_Array()'
    DirectoryCategory_Array.o(.text+0x1bd):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    DirectoryCategory_Array.o(.text+0x25b):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    DirectoryCategory_Array.o(.text+0x285):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    DirectoryCategory_Array.o(.text+0x323):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    
    DirectoryCategory_Array.o(.text+0x34d):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::~Axis_Array()'
    DirectoryCategory_Array.o(.text+0x3eb):DirectoryCategory_Array.cpp: more undefined references to `axiscpp::Axis_Array::~Axis_Array()' follow
    DirectoryCategory_Array.o(.text+0x53f):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::get(int&, axiscpp::XSDTYPETag&) const'
    DirectoryCategory_Array.o(.text+0x711):DirectoryCategory_Array.cpp: undefined reference to `axiscpp::Axis_Array::clear()'
    GoogleSearchPort.o(.text+0x1b):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::Stub(char const*, axiscpp::AXIS_PROTOCOL_TYPE)'
    
    GoogleSearchPort.o(.text+0x45):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::Stub(char const*, axiscpp::AXIS_PROTOCOL_TYPE)'
    GoogleSearchPort.o(.text+0xa7):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::Stub(char const*, axiscpp::AXIS_PROTOCOL_TYPE)'
    GoogleSearchPort.o(.text+0xcd):GoogleSearchPort.cpp: undefined reference to `axiscpp::Call::setEndpointURI(char const*)'
    GoogleSearchPort.o(.text+0xf0):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::~Stub()'
    GoogleSearchPort.o(.text+0x173):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::Stub(char const*, axiscpp::AXIS_PROTOCOL_TYPE)'
    GoogleSearchPort.o(.text+0x199):GoogleSearchPort.cpp: undefined reference to `axiscpp::Call::setEndpointURI(char const*)'
    GoogleSearchPort.o(.text+0x1bc):GoogleSearchPort.cpp: undefined reference to `axiscpp::Stub::~Stub()'
    ...
    

    Solche Fehler bekommt man doch immer wenn man die Library nicht richtig eingebunden hat oder ?
    Ich benutze Dev-Cpp und habe die Libary bzw. den Ordner in dem sie ist auch angegeben, einmal im Projekt und einmal Allgemein.

    Ich habe auch schon versucht das ganze über die console zu compilieren

    g++ *.cpp -I"D:\pfad\include" -L"D:\pfad\lib\axis\axis_client.lib"
    bzw.
    g++ *.cpp -I"D:\pfad\include" -L"D:\pfad\lib\axis\"
    

    aber da kommt der selbe Fehler. Wenn ich die Library nicht mit angebe, kommt auch der selbe Fehler.

    Liegt es daran das ich die Library falsch eingebunden habe ?
    Oder könnte es auch noch andere Fehler geben ?
    Wie geht man bei solchen problemen am besten vor ?



  • Ich vermute mal, du hast dort die falsche LIB angegeben (oder die falsche Version der LIB). Schau mal in der Axis-Doku nach, in welcher Library die angegebenen Funktionen tatsächlich untergebracht sind.



  • Naja, es gibt nur 2 Libs, einmal die Axis_Client.lib und die Axis_Server.lib...
    Ich habe mir inzwischen das ganze nochmal von wo anders gesaugt, komme aber zum selben Ergebnis.
    Ich habe mir auch mal den Source geholt, aber den krieg ich nicht gebuildet 😉



  • Meinste das du die richtigen Libs hast? Haben GNU-Compiler-Libs nicht die Endung .a???

    .LIB sieht mir verdächtig nach MSVC-Libs aus.



  • Hast du mal die Axis_Server.lib probiert? Ansonsten kann es noch sein, daß die Libs nicht G++ kompatibel sind.



  • Oha, das wusste ich garnicht ... Dann liegt es wohl daran das die Libs nicht mit meinem Compiler kompatibel sind 😞
    Ich habe jetzt gerade in der build.xml gelesen, das unter Windows wohl ein MSVC Compiler benötigt wird ...
    Gibt es nicht irgendwie noch nen anderen compiler der mit .libs umgehen kann ?
    Irgend eine möglichkeit muss es doch geben das auch ohnen nen Microsoft compiler zu machen oder ?



  • Wenn die zur Verfügung stehen, solltest du die mal die Axis_Server.cpp bzw. Axis_Client.cpp suchen und die durch deinen Compiler jagen. Andernfalls müsstest du mal bei den Autoren nachfragen, woher du die Bibliotheken für GCC bekommen kannst.

    (PS: LIB ist nicht gleich LIB - selbst wenn andere Compiler (bzw. Linker) auch mit .lib Dateien arbeiten, ist es nicht sicher, daß sie mit MS-LIBs zurechtkommen)



  • Ok, gut zu wissen für die Zukunft 🙂
    Hab mir erstmal Visual Studio 2005 Express besorgt, damit hats dann auch tatsächlich funktioniert.

    Danke für eure Hilfe!


Log in to reply