DevC++ char* addieren/zusammenführen
-
Hi!
Ich bin grad dabei mir eine kleine dll zu schreiben(um endlich mal in dieses thema reinzukommen)
Dafür nutze ich DevC++ (sonst Borland).Meine Funktion:
[cpp]EXPORT char* CALLBACK GetString(char* KeyState)
{
char* NewState = "Hello World!";
NewState = strcat(KeyState, NewState);
return NewState;
}So gehts.
Jedoch will ich das der String "KeyState" hinten angehängt wird..
mit NewState = NewState + KeyState gehts schonmal nich...KeyState ist ein beliebig langer string der von dem Programm welches die dll nutzt übergeben wird...
Wie bekomme ich das nun hin?
Vielen Dank schonaml :>
(#include <iostream>
#include <string>
using namespace std; <--schon mit drin)
-
Nein, so geht es nicht, da du dabei Speicher kaputtmachst.
Wenn du "char*" als Strings verwendest musst du dir auch immer Gedanken darüber machen wem der String gehört, und über welche API er angefordert/freigegeben werden muss (z.B. malloc/free vs. new[]/delete[] vs. HealAlloc/HeadFree etc.).
Wenn du dagegen std::string oder Ähnliches im Interface einer DLL verwenden willst bringt das wieder ganz eigene Probleme.
Im Idealfall braucht man im Interface der DLL nur Strings als reine Input-Parameter. Die kann man dann einfach mit char* machen (die Frage nach Ownership und API erübrigt sich, da man bei einem einfachen Input-Parameter den String nur "borgt" bis die Funktion zurückkehrt).