C++ Funktion Rückgabe 2d Char Array
-
Hallo Zusammen,
ich versuche seit jetzt zwei Tagen ein Funktion zu schreiben, die ein 2D Char Array zurückgibt. Es werden zwar kein Fehler angezeigt, aber das Programm wird nicht ausgeführt.
//Funktion char** test1(char* bar) { char *result[]={"1","2","3"}; return result; // return SysAllocStringByteLen(result.c_str(),4); } ... aufruf char* test= "abc"; char* tes[]=test1(test);
Was mache ich hier falsch
-
Wenn das dein vollständiger Quellcode ist, dann machst du alles falsch.
-
Hallo,
für die Funktion ist es mein vollständiger Code. Mein Ziel ist es ein Funktion zu schreiben, die ein eigentlich ein 3d Array zurück gibt.
-
Benutze std::vector und std::string:
//Funktion std::vector<string> test1() { std::vector<string> result={"1","2","3"}; return result; } ... aufruf std::vector<string> tes=test1();
-
Hallo,
danke hat funktioniert. Mein Problem ist ich möchte den Array über ein Dll zurückgeben
DLL vector<char*> _stdcall test1(char* bar) { std::vector<char*> result; result.push_back ("a"); result.push_back ("d"); //char* result[]={"1","2","3"}; return result; // return SysAllocStringByteLen(result.c_str(),4); }
Das funktioniert aber leider nicht
-
borhan schrieb:
Das funktioniert aber leider nicht
"Funktioniert nicht" ist keine Problembeschreibung.
Es hatte schon seinen Grund, dass ich std::string und nicht char* vrogeschlagen habe.
-
DLL std::vector<string> _stdcall test1(char* bar) { std::vector<string> result; result.push_back ("as"); result.push_back ("das"); return result; // return SysAllocStringByteLen(result.c_str(),4); }
Wenn ich es mit string machen, funktioniert es auch nicht Fehlermedlung ist:
error C2562: 'test1': 'void'-Funktion gibt einen Wert zurück
Ich habe deswegen anstelle von string char* benutzt weil ich die Dll in VB aufrufen möchte und in VB können c++ strings nicht bearbeitet werden
-
Die API Schnittstellen sollte man immer in C halten, um die Kompatibilität zu gewährleisten!
Du musst vermutlich mit new arbeiten und am besten ein 1D Array zurückgeben.
-
borhan schrieb:
Wenn ich es mit string machen, funktioniert es auch nicht Fehlermedlung ist:
error C2562: 'test1': 'void'-Funktion gibt einen Wert zurück
Was auch immer du da gemacht hast, auch vector<char*> ist nicht void.
borhan schrieb:
Ich habe deswegen anstelle von string char* benutzt weil ich die Dll in VB aufrufen möchte und in VB können c++ strings nicht bearbeitet werden
Aber vector? Das würde mich ja jetzt wundern.
-
ja, vector. ich weiss auch wieso diese Fehlermeldung kommt.
Wenn ich die Funktion aus c++ aufrufe dann funktioniert die Fehlerfrei. Wenn ich es als DLL kombinieren möchte funktioniert es dann nicht und kommt dann diese komisch Fehlermeldung