Beiträge von M.W.

    hi, ich glaub ich hab das Problem gefunden. Ich hab die swich anweisung ja nur verkürzt angegeben, aber da lag grad der hacken: im case 1 fall erzeuge ein Objekt welches nach der switch anweisung benutzt wird. Das heisst wenn ich in alle andere Fälle reingehe kennt er das Objekt ja garnicht und versucht nach der Switch anweisung darauf zuzugreifen...
    Man das hätt ich auch eher sehen können...
    Trotzdem danke Plantschkuh
    Problem gelöst...

    ich verwende gcc version 4.2.1 (SUSE Linux). Meine main ist leider zu gross um hier zu posten.
    Wenn ich z.b. die 1 und enter drücke wird auch "Hallo2" ausgegeben jedoch folgt danach "Speicherzugriffsfehler" (nicht "Datenzugriffspeicherfehler" hab mich verguckt gehabt)
    Aber Speicher alloziieren und wieder frei geben dürfte hier eigentlich nicht (wie du schon sagtest) notwendig sein....
    Ansonsten müsste ich mal meine main verkleinern und doch posten...

    Hi,
    ich hab ein kleines Programm geschrieben welches sich einwandfrei kompilieren und ausführen lässt. Nun wollte ich eine Art Menü einbauen mit der switch Anweisung



    Dies lässt sich auch kompilieren. Wenn ich jedoch das Programm ausführe und dann z.b. die 1 drücke (und dann enter) kommt die Fehlermeldung
    "Datenzugriffspeicherfehler". Weiss jemand womit das zu tun hat und wie man das beheben kann? In C gibts ja malloc und so...

    Gruss

    also erstmal danke für die antworten an euch.
    Pantschkuh: Ich versuche hier niemanden irgendwas einzureden, wie was compiliert und gelinkt wird. Ich habe nur gesagt, dass es unter meiner IDE läuft. Ich hab auch nicht erzählt, dass ich davon Ahnung habe. Du kommst mir leicht aggressiv vor, vielleicht solltest du mal wieder bisl sport machen, um vom PC wegzukommen...
    RingDing: Deine Kommentare sind sehr konstruktiv

    Also ich hab die Dateien mit der KDevelop-IDE (Open SUSE Linux) kompiliert und gelinkt bekommen.. Komisch denn es wird auch der g++ Compiler benutzt..
    Ich weiss nicht ob ich das jetzt verwechsle, aber die .hpp Dateien enthalten die Deklarationen der der Memberfunktionen der Klassen und nicht die Definitionen. Diese werden in der .cpp-Datei geschrieben. Nach dem Motto: Was gibt es für Methoden dann guck in die hpp-Datei und was machen die Methoden dann guck in die cpp-Datei....

    Mit der Grösse der Schriftart spiele ich allerdings nicht, mach nur ab und zu was fett wie z.b. bestimmte Befehle oder so ....da wo ein kleiner Tippfehler schon grosse Auswirkungen hat...

    Gruss

    Doch normalerweise verwende ich Einrückungen. Das liegt irgendwo an den KDevelop einstellungen, dass diese nicht automatisch gemacht werden=)
    Ja die drei Compilier- und Linkzeilen hab ich verstanden, aber wenn ich jetzt mal die beiden Programme vergleiche gibt es von der Struktur ja keinen wesentlichen unterschied...Ausserdem werden ausser die main Datei alle anderen (hier die calculator.cpp und calculator.hpp) automatisch generiert und die main.Funktion der main- Datei ist auch vorgegeben. Zudem ist der Linux Befehl :
    g++ c.cpp -I$AXISCPP_HOME/include -I$AXISCPP_HOME/lib -ldl -L<PathToTheLibrary>laxis_client.so -o calculator´
    auch vorgegeben. Mittlerweile hab ich erfahren dass die version (beachte die aktuellste der Seite) sehr bugbehaftet ist und keineswegs verwendet werden soll. Also mittlerweile glaub ich das es ein Bug in der Axis Engine zu sein scheint. So benutze ich jetzt Axis2C, mal gucken ob es da besser läuft...

    Also ich dachte das in der main Datei keine Defintion von Calculator sein muss, deshalb binde ich ja auch die Header-Datei Calculator.hpp ein. Zudem hab ich mal ein einfachen Beispiel programmiert

    Code
    [size=10]class VersionPortType[/SIZE]
    [size=10]{[/SIZE]
    [size=10]public: VersionPortType();[/SIZE]
    [size=10]~VersionPortType();[/SIZE]
    [size=10]void getVersion();[/SIZE]
    [size=10]};[/SIZE]
     
    [size=10]#endif[/SIZE]



    meine Main Datei sieht so aus:



    so in dieser main Datei hab ich auch keine Definition der Klasse aber es lässt sich einwandfrei compilieren und linken..
    Kannst du ansonsten nochmal die Linux befehle zum compileren und linken genau nennen mit der richtigen reihenfolge? Bin nämlich eher an windows gewöhnt.. trotzdem thanks

    gruss

    so nochmal bisl leserlicher;)
    so hier mal die cpp-datei




    und hier die .hpp-Datei:




    weiss nicht ob das weiter hilft. Diese Stubs Klasssen werden von der Axis Engine automatisch generiert und laut tutorial braucht an diesen Dateien nix geändert werden. Meine main sieht etwa so aus:

    Code
    [size=10][size=10]#include "Calculator.h"[/SIZE]
    [size=10]#include <stdio.h>[/SIZE]
    [size=10]using namespace std;[/SIZE]
    [size=10]int main()[/SIZE]
    [size=10]{[/SIZE]
    [size=10]Calculator test;[/SIZE]
    [size=10]return 0;[/SIZE]
    [size=10]}[/SIZE]
    [/SIZE]



    allein das führt schon zum Fehler. Lass ich die Zeile "Calculator test" raus, tritt der Fehler nicht mehr auf...vielleicht hat ja jemand die Lösung..
    und danke für die schnelle antwort..

    hi,
    so hier mal die cpp-datei

    -----------------------------------------------------------------------
    /*
    * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
    * This file contains Client Stub implementation for remote web service.
    */
    #include "Calculator.hpp"
    #include <axis/AxisWrapperAPI.hpp>
    #include <axis/Axis.hpp>
    #include <string.h>
    using namespace std;
    Calculator::Calculator(const char* pchEndpointUri, AXIS_PROTOCOL_TYPE eProtocol)
    :Stub(pchEndpointUri, eProtocol)
    {
    }
    Calculator::Calculator()
    :Stub(" ", APTHTTP1_1)
    {
    m_pCall->setEndpointURI("http://localhost/axis/Calculator");
    }
    Calculator::~Calculator()
    {
    }

    /*Methods corresponding to the web service methods*/
    /*
    * This method wrap the service method add
    */
    xsd__int Calculator::add(xsd__int Value0, xsd__int Value1)
    {
    xsd__int Ret = 0;
    const char * pcCmplxFaultName = NULL;
    try
    {
    if( AXIS_SUCCESS != m_pCall->initialize( CPP_RPC_PROVIDER))
    {
    return Ret;
    }
    if( NULL == m_pCall->getTransportProperty( "SOAPAction", false))
    {
    m_pCall->setTransportProperty( SOAPACTION_HEADER,
    "Calculator#add");
    }
    m_pCall->setSOAPVersion( SOAP_VER_1_1);
    m_pCall->setOperation( "add", "http://localhost/axis/Calculator");
    applyUserPreferences();
    m_pCall->addParameter( (void *) &Value0, "in0", XSD_INT);
    m_pCall->addParameter( (void *) &Value1, "in1", XSD_INT);
    if( AXIS_SUCCESS == m_pCall->invoke())
    {
    if( AXIS_SUCCESS == m_pCall->checkMessage( "addResponse",
    "http://localhost/axis/Calculator"))
    {
    xsd__int * pReturn = m_pCall->getElementAsInt( "addReturn", 0);
    if( pReturn)
    {
    Ret = *pReturn;
    Axis::AxisDelete( (void *) pReturn, XSD_INT);
    }
    }
    }
    m_pCall->unInitialize();
    return Ret;
    }
    catch( AxisException& e)
    {
    int iExceptionCode = e.getExceptionCode();
    if( AXISC_NODE_VALUE_MISMATCH_EXCEPTION != iExceptionCode)
    {
    throw SoapFaultException( e);
    }
    ISoapFault * pSoapFault = (ISoapFault *) m_pCall->checkFault( "Fault",
    "http://localhost/axis/Calculator");
    if( pSoapFault)
    {
    m_pCall->unInitialize();
    throw SoapFaultException( e);
    }
    else
    {
    throw;
    }
    }
    }
    -----------------------------------------------------------------------

    und hier die .hpp-Datei:
    -----------------------------------------------------------------------

    /*
    * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)
    * This file contains Client Stub Class for remote web service
    */
    #if !defined(__CALCULATOR_CLIENTSTUB_H__INCLUDED_)
    #define __CALCULATOR_CLIENTSTUB_H__INCLUDED_
    #include <axis/client/Stub.hpp>
    #include <axis/SoapFaultException.hpp>
    #include <axis/ISoapFault.hpp>
    AXIS_CPP_NAMESPACE_USE
    class Calculator :public Stub
    {
    public:
    STORAGE_CLASS_INFO Calculator(const char* pchEndpointUri, AXIS_PROTOCOL_TYPE eProtocol=APTHTTP1_1);
    STORAGE_CLASS_INFO Calculator();
    public:
    STORAGE_CLASS_INFO virtual ~Calculator();
    public:
    STORAGE_CLASS_INFO xsd__int add(xsd__int Value0, xsd__int Value1);
    STORAGE_CLASS_INFO xsd__int sub(xsd__int Value0, xsd__int Value1);
    STORAGE_CLASS_INFO xsd__int mul(xsd__int Value0, xsd__int Value1);
    STORAGE_CLASS_INFO xsd__int div(xsd__int Value0, xsd__int Value1);
    };
    #endif /* !defined(__CALCULATOR_CLIENTSTUB_H__INCLUDED_)*/

    -----------------------------------------------------------------------

    weiss nicht ob das weiter hilft. Diese Stubs Klasssen werden von der Axis Engine automatisch generiert und laut tutorial braucht an diesen Dateien nix geändert werden. Meine main sieht etwa so aus:

    #include "Calculator.h"
    #include <stdio.h>
    using namespace std;
    int main()
    {
    Calculator test;
    return 0;
    }

    allein das führt schon zum Fehler. Lass ich die Zeile "Calculator test" raus, tritt der Fehler nicht mehr auf...vielleicht hat ja jemand die Lösung..
    und danke für die schnelle antwort..

    hi, das problem ist, dass die Dateien calculator.cpp und calculator.hpp automatisch mit dem wsdl2ws-Tool generiert werden und die Deklarationen und Definitionen der De- und Konstruktoren beinhalten. An diesen Dateien dürfte man eigentlich nach Tutorial nichts verändern...Es handelt sich auch(glaub ich) um einen Linker Fehler und keinen Compile Fehler...Ich hab das Beispiel auch unter Visual Studo 2003.net probiert und da kommen auch ähnliche Fehler, die ich nicht lösen konnte...So ist schonmal aussgeschlossen dass es was mit der Platfom Windows und Linux zu tun hat. Zudem weiss ich nicht was der zusatz -ldl im Linux befehl macht. Trotzdem danke für die Antwort Planschkuh=) Hat irgendjemand mal das axis c++ beispiel ausprobiert? Kann mir jemand helfen?
    lg

    Hallo ,
    ich hab mich mit Axis C++ und dem calculator beispiel beschäftigt und habe einige Probleme. Ich hab hier mal die Probleme auf englisch verfasst, hoffe ihr könnt trotzdem damit was anfangen;)

    Hi all,
    i have some problems with the Axis c++ calculator-example. I build my Client with
    g++ c.cpp -I$AXISCPP_HOME/include -I$AXISCPP_HOME/lib -ldl -laxiscpp_client -o calculator and
    i get the error: "cannot find laxiscpp_client". I search in the mailing list for this problem and change my command to:
    g++ c.cpp -I$AXISCPP_HOME/include -I$AXISCPP_HOME/lib -ldl -L<PathToTheLibrary>laxis_client.so -o calculator
    Now i think it finds the library but i get the error "undefined reference to 'Calculator::Calculator()' "
    I have search in the mailing list but all tipps don´t solve this problem.
    I use Open Suse 10.3,compiler version 4.2.1 and try it with KDE/KDevelop too, but it produces the same error.
    I think i have set the LD_LIBRARY_PATH correctly. Maybe there is a conflict with 32 and 64 bit processor.
    Can anybody help me please?
    After i can´t solve this problem i go on with the server guide. I run the simle Axis Server with:
    ./simple_axis_server 8080 and then deploy the service with:
    java org.apache.axis.client.AdminClient -Lhttp://localhost:8080/axis/Services/AdminService deploy.wsdd
    I get the message: "Porcessing file deploy.wsdd"
    Was the deploying successful or not?
    By checking the deploying configuration in the user server guide:Open a browser and enter the link http://localhost/axis
    I can´t open the link. Why it doesn´t work??
    I hope there is somebody who can help me in some questions...