MMORPG Core - Deutsche Community für Online Rollenspiele - Powered by vBulletin

  • AAA
  • Aggressive
  • Alienated
  • Amazed
  • Amused
  • Angelic
  • Angry
  • Apelike
  • Artistic
  • Asleep
  • Balanced
  • Banhappy
  • Bashful
  • Bitchy
  • Blah
  • Bookworm
  • Bored
  • Breezy
  • Brooding
  • Busy
  • Buzzed
  • Chatty
  • Cheeky
  • Cheerful
  • Cloud 9
  • Cold
  • Coldturkey
  • Confused
  • Cool
  • Crappy
  • Creative
  • Curious
  • Cynical
  • Daring
  • Dead
  • Depressed
  • Devilish
  • Disagree
  • Doh
  • Doubtful
  • Dramaqueen
  • Dreaming
  • Drunk
  • Elated
  • Energetic
  • Fiendish
  • Fine
  • Flirty
  • Gloomy
  • Goofy
  • Grumpy
  • Happy
  • Horny
  • Hot
  • Hungover
  • In Love
  • Innocent
  • Inpain
  • Insomnious
  • Inspired
  • Lonely
  • Lucky
  • Lurking
  • Mellow
  • Mischievious
  • Mondayblues
  • Musical
  • Nerdy
  • Notamused
  • Notworthy
  • Paranoid
  • Pensive
  • Predatory
  • Procrastinating
  • Psychedelic
  • Question
  • Relaxed
  • Roflmao
  • Sad
  • Scared
  • Scurvy
  • Shocked
  • Sick
  • Sleepy
  • Sluggish
  • Sneaky
  • Snobbish
  • Spaced
  • Spooky
  • Sporty
  • Starving
  • Stressed
  • Sunshine
  • Sweettooth
  • Thinking
  • Tired
  • Torn
  • Twisted
  • Veggedout
  • Volatile
  • Woot
  • Worried
  • Yeehaw
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • DDos
  • Tweet   
    Ergebnis 1 bis 12 von 12
    1. #1
      Anfänger
       
      Avatar von Dark-Comet
      Registriert seit
      Jul 2009
      Beiträge
      37
      Danke
      6
      1

      Standard c++ Library string Funktion

      Die Werbung stört? Registriere dich hier!
      Hallo,
      ich habe eine c++ Library erstellt die so aussieht:
      Code:
      //.h
      using namespace std;
      #define API_API extern "C" __declspec (dllexport)
      API_API string description_a(int);
      //.cpp
      API_API string description_a(int Input)
      {
          string Output = "Test";
          return Output;
      }
      Beim Abrufen der Funktion erhalte ich einen
      Code:
      AccesViolationExeption (Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.)
      Warum ist das so?
      Hat es vllt. was mit dieser Warnung zu tun:
      Code:
      warning C4190: 'description_a' hat C-Bindung angegeben, aber gibt UDT 'std::basic_string<_Elem,_Traits,_Ax>' zurück, was mit C inkompatibel ist
      MFG
      Dark

    2. #2
      Delphi
       
      Avatar von ichbinniemand
      Registriert seit
      Jul 2009
      Beiträge
      966
      Danke
      24
      Danke erhalten: 164

      Standard

      ah ja... schon mal mit ganz normalen strings versucht?
      #include <string>
      string Str="S";
      Zitat Zitat von Steve Jobs
      Stay hungry - stay foolish.


    3. #3
      Anfänger
       
      Avatar von Dark-Comet
      Registriert seit
      Jul 2009
      Beiträge
      37
      Danke
      6
      1

      Standard

      "using namespace std;" ist eig. das selbe.
      Ich benutze jetzt char* als Workaround, klappt gut.

      MFG
      Dark

    4. #4
      Core
      AAA
       

      Registriert seit
      Aug 2009
      Beiträge
      556
      Danke
      31
      Danke erhalten: 185

      Standard

      [Um Links zu sehen registriere dich bitte. Klicke hier.]
      Das solltest du aber eigentlich bereits kennen, wenn du wirklich mit C++ programmieren möchtest.

    5. #5
      Anfänger
       
      Avatar von Dark-Comet
      Registriert seit
      Jul 2009
      Beiträge
      37
      Danke
      6
      1

      Standard

      Tag, ich habe ein neuen Problem:
      Meine c++ Library hat int als Input eingestellt, aber das zugehörige Programm sendet einen String.
      Die Library verarbeitet den Input zum int und so wird z.b. der string "fame" zu "67271526".
      Ist es möglich diesen int wieder in einen String umzuwandeln ohne das ich den Inputtyp ändern muss?
      Falls jemand mein Begriff Input nicht versteht - Es ist das Argument mein starten einer Methode.

      Als alternative wär mir eine kleine Hilfestellung wie ich im Assemble (OllyDBG) einen Int wert in einen string umwandeln kann (in einem Beispel: (HEX)A8 0A 6B 00 zum string 7015080) ganz recht.

    6. #6
      Core
      AAA
       

      Registriert seit
      Aug 2009
      Beiträge
      556
      Danke
      31
      Danke erhalten: 185

      Standard

      Meine c++ Library hat int als Input eingestellt, aber das zugehörige Programm sendet einen String.
      "Int als Input eingestellt"??
      "Programm sendet einen String"??
      Könntest du dich bitte deutlicher ausdrücken und ggf. etwas Code posten?
      Ich verstehe kein Wort.

    7. #7
      Anfänger
       
      Avatar von Dark-Comet
      Registriert seit
      Jul 2009
      Beiträge
      37
      Danke
      6
      1

      Standard

      Die externe Funktion der Library lautet so:
      "int buy_item(int Input);"
      Das Programm sendet aber keinen int Wert, sondern einen string Wert.

      Weiß jemand wie ich im Assemble einen int Wert in string Wert wandeln kann?

      MFG
      Dark

    8. #8
      Core
      AAA
       

      Registriert seit
      Aug 2009
      Beiträge
      556
      Danke
      31
      Danke erhalten: 185

      Standard

      Und was sollte das bringen?
      Dann müsstest du ja die ganze Funktion umschreiben, dass sie auch mit diesem String arbeiten kann.

      Ich finde es etwas komisch ... Du hast eine Library und willst von ihr eine Funktion nutzen, willst ihr aber andere Parameter übergeben als sie vorsieht? Wieso übergibst du ihr nicht den Wert, den sie laut - sofern vorhanden - API verlangt?!

    9. #9
      Delphi
       
      Avatar von ichbinniemand
      Registriert seit
      Jul 2009
      Beiträge
      966
      Danke
      24
      Danke erhalten: 164

      Standard

      Wenn das ganz normale ascii werte sind(also der byte wert eines chars) kannst du aus z.b. 64 mit (char)64 wieder ein a machen
      Zitat Zitat von Steve Jobs
      Stay hungry - stay foolish.


    10. #10
      Top Poster
       
      Avatar von *electriZer*
      Registriert seit
      Jun 2009
      Ort
      Kurdistan <3
      Beiträge
      748
      Danke
      53
      Danke erhalten: 194

      Standard

      Warum arbeitest du mit Assembler? Solange du keinen Microprozessor Programmierst nützt dir das ein Scheissdreck.

      Wenn das Programm dir einen String sendet und deine Funktion aber nur Int Werte an nimmt, dann kannst du theoretisch gesehen nicht anderes als einen Fehler bekommen.
      Ich frage mich grade wie du überhaupt diese Zahl da bekommen hast.
      Schreib halt noch eine Funktion die Strings annimmt und die dann mit "atoi()"(GNU C Library) das ganze in einen Integer umwandelt.

    11. #11
      Core
      AAA
       

      Registriert seit
      Aug 2009
      Beiträge
      556
      Danke
      31
      Danke erhalten: 185

      Standard

      Zitat Zitat von *electriZer* [Um Links zu sehen registriere dich bitte. Klicke hier.]
      Warum arbeitest du mit Assembler? Solange du keinen Microprozessor Programmierst nützt dir das ein Scheissdreck.

      Wenn das Programm dir einen String sendet und deine Funktion aber nur Int Werte an nimmt, dann kannst du theoretisch gesehen nicht anderes als einen Fehler bekommen.
      Ich frage mich grade wie du überhaupt diese Zahl da bekommen hast.
      Schreib halt noch eine Funktion die Strings annimmt und die dann mit "atoi()"(GNU C Library) das ganze in einen Integer umwandelt.
      Wenn er einen String wie "fame" an eine Funktion übergeben möchte, die eine Zahl erwartet, bringt ihm atoi nichts ...
      Das liegt eher an einem gewaltigen Denkfehler seinerseits.

    12. #12
      Top Poster
       
      Avatar von *electriZer*
      Registriert seit
      Jun 2009
      Ort
      Kurdistan <3
      Beiträge
      748
      Danke
      53
      Danke erhalten: 194

      Standard

      Zitat Zitat von Well
      Wenn er einen String wie "fame" an eine Funktion übergeben möchte, die eine Zahl erwartet, bringt ihm atoi nichts ...
      Zitat Zitat von mir
      Schreib halt noch eine Funktion die Strings annimmt und die dann mit "atoi()"(GNU C Library) das ganze in einen Integer umwandelt.
      ----
      Aber ja mit dem Denkfehler stimme ich dir zu.

    Lesezeichen

    Berechtigungen

    • Neue Themen erstellen: Nein
    • Themen beantworten: Nein
    • Anhänge hochladen: Nein
    • Beiträge bearbeiten: Nein
    •