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).


Anmelden zum Antworten