char* übergabe



  • Hallo Leute,

    ich habe folgendes Problem: Ich will einen Text als char* eingeben und diesen dann an eine Funktion in einer dll übergeben, die diesen Text dann bearbeitet. Momentan habe ich probleme mit der übergabe von char*.

    dies steht unter anderem in meinem Hauptprogramm:

    extern "C" __declspec(dllimport)char* pluginStart(char* text, int selstart, int sellenght);

    ...

    int a,b;
    char* eingabe;

    ...

    eingabe= pluginStart(eingabe, a, b)

    ...

    dies steht unter anderem in meiner dll:

    ...

    extern "C" __declspec(dllexport)char* pluginStart(char* text, int selstart, int sellenght)
    {
    text= "Hallo Welt\0";
    return text;
    ...

    Nun gibt es dass Problem mit der übergabe des char*, bei der Übergabe hängt sich mein Hauptprogramm immer auf. Die Übergabe der integervar a und b funktioniert. Kann mir da jemand helfen?
    mfg Strieme



  • Du willst eine Übergabe ByRef vornehmen. Dazu müsstest Du den ersten Parameter als 'char**' oder zumindest 'char*&' deklarieren. Außerdem ist der Speicherbereich nach Verlassen der Funktion ungültig (daher wohl der Crash). Du müsstest daher schon explizit Speicher freiräumen und später außerhalb der Funktion wieder expizit freigeben.

    Oder Du reservierst vor Aufruf der Methode genügend Speicher, übergibst einen Zeiger auf den Speicherbereich und verwendest 'strcpy' o.ä., um den Text in den vor-reservierten Speicherbereich zu kopieren. Dabei musst Du natürlich darauf achten, dass genügend Speicher angefordet worden ist.



  • Ok, das klingt logisch. Ich weiß allerdings nicht wie das mit char** funktioniert. ich hab da mal probiert, aber ohne erfolg. außerdem hab ich probleme mit der speicher reservierung, hab noch nie mit malloc oder new gearbeitet. hättest du da einen konkreten programmiervorschlag?



  • wunderbar, hab mich da mal reingelesen. nach speicherreservierung hat es dann auch mit char* funktioniert. danke für die hilfe


Anmelden zum Antworten