const char* in DLL Problem



  • hallo zusammen

    ich habe folgende methode in meiner DLL

    void CTest::GetSystem(const char* c_Type)
    {
    ....
    }
    

    so, wenn ich jetzt aus meinem Programm heraus diese aufrufe, geschieht das so:

    Test.GetSystem(c_Var);
    

    jetzt möchte ich des aber gern so haben, dass ich den Übergabewert als Referenz habe, sodass die Methode GetSystem in der DLL diesen Übergabewert verändern kann und ich den in meinem Hauptprogramm zur verfügung stehen habe, weil den return wert brauche ich um zu frage, ob die methode geklappt hat oder eben nicht 😉

    hat da einer eine idee?

    ich hab des auch schon so probiert:

    void CTest::GetSystem(const char** c_Type)
    {
    ....
    }
    
    Test.GetSystem(&c_Var);
    

    aber da kommt er mir leider mit einem compiulerfehler



  • Hallo,

    Da brauchst du doch keine Referenz. Du darfst deinen Parameter dann nur nicht const machen. Außerdem solltest du die Größe des reservierten Speichers mit übergeben, damit du nich darüber hinaus schreiben kannst.



  • dachte ich auch zuerst

    problem an der sache ist, dass der wert, den ich übergebe von Typ CString ist

    hab des jetzt mal so probiert, aber leider auch compilerfehler



  • und welchen? Zeig doch auch bitte mal den korrekten Code.
    Du kannst natürliche nicht den internen char-Zeiger von CString übergeben. Kopiere den doch einfach zuerst in eine dynamisch erstelltes char-Array.



  • ja, das kann ich machen.

    dann sollte die sache auch funktionieren denke ich

    und hinterher pack ich den char dann einfach in einen string wieder gell?


Anmelden zum Antworten