c++ Library string Funktion

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • c++ Library string Funktion

      Hallo,
      ich habe eine c++ Library erstellt die so aussieht:

      Quellcode

      1. //.h
      2. using namespace std;
      3. #define API_API extern "C" __declspec (dllexport)
      4. API_API string description_a(int);
      5. //.cpp
      6. API_API string description_a(int Input)
      7. {
      8. string Output = "Test";
      9. return Output;
      10. }
      Beim Abrufen der Funktion erhalte ich einen

      Quellcode

      1. 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:

      Quellcode

      1. 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
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • 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.
    • 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.
    • 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?!
    • 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.
    • *electriZer*;242486 schrieb:

      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.
    • "Well" schrieb:

      Wenn er einen String wie "fame" an eine Funktion übergeben möchte, die eine Zahl erwartet, bringt ihm atoi nichts ...

      "mir" schrieb:

      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.