C# Choas bei Aufruf von Dll-Funktion mit Rückgabe Char*



  • Hallo,
    ich muss aus C# eine Funktion einer DLL aufrufen, die einen char* zurückgibt. Die Funktionsdeklaration in C# sieht wie folgt aus:

    [DllImport("xyz.dll", EntryPoint = "GetString", CallingConvention = CallingConvention.StdCall)]
            public static extern string GetString(....parameter....);
    

    Andere Funktionen der DLL funktionieren problemlos, nur diese Funktion macht mich noch verrückt. Ich bekomme beim Aufruf immer unterschiedliche Ergebnisse zurück, manchmal sogar den richtigen String. Meistens erhalte ich aber eine AccesViolationException.
    Wird die Funktion aus einem C++-Programm aufgerufen, funktioniert sie btw. problemlos.
    Hat da jemand eine Idee dazu? Ich bin kurz vorm Verzweifeln 😕 😞



  • Zeige mal den Code der DLL (wo der char* zurückgegeben wird).
    Das ist nämlich meiner Meinung nach heikel, bezogen auf die Speicherverwaltung.
    Wer alloziert den Speicher? Wie lange ist der Zeiger darauf gültig?
    Muss der Speicher ev. wieder freigegeben werden? Ist er statisch?

    Simon


Anmelden zum Antworten