Hallo,
ich habe eine c++ Library erstellt die so aussieht:
Beim Abrufen der Funktion erhalte ich einenCode://.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; }
Warum ist das so?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.)
Hat es vllt. was mit dieser Warnung zu tun:
MFGCode:warning C4190: 'description_a' hat C-Bindung angegeben, aber gibt UDT 'std::basic_string<_Elem,_Traits,_Ax>' zurück, was mit C inkompatibel ist
Dark
ah ja... schon mal mit ganz normalen strings versucht?
#include <string>
string Str="S";
Zitat von Steve Jobs
"using namespace std;" ist eig. das selbe.
Ich benutze jetzt char* als Workaround, klappt gut.
MFG
Dark
[Um Links zu sehen registriere dich bitte. Klicke hier.]
Das solltest du aber eigentlich bereits kennen, wenn du wirklich mit C++ programmieren möchtest.
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.
"Int als Input eingestellt"??Meine c++ Library hat int als Input eingestellt, aber das zugehörige Programm sendet einen String.
"Programm sendet einen String"??
Könntest du dich bitte deutlicher ausdrücken und ggf. etwas Code posten?
Ich verstehe kein Wort.
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
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?!
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 von Steve Jobs
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.
Zitat von Well
----Zitat von mir
Aber ja mit dem Denkfehler stimme ich dir zu.
Lesezeichen