Wie speichere ich eine von einer C ++ - Funktion zurückgegebene Variable uint8_t * in c #?

Ich rufe eine C ++ - DLL aus meinem C # -Programm auf. Die DLL besteht aus mehreren Funktionen und ich kann die meisten außer dieser aufrufen.

Die C ++ - Funktion sieht wie folgt aus:

 __declspec(dllexport) uint8_t* myHash(const char *filename)
    {
         uint8_t *hash = (unsigned char*)malloc(72*sizeof(uint8_t));
         //some processing on hash  
         return hash;
    }

Wie im obigen Code zu sehen ist, speichert die Hash-Funktion ein Zeichenarray. Ich möchte die Werte in meinem C # -Programm erhalten, kann dies jedoch nicht.

Mein C # -Code sieht wie folgt aus:

 [DllImport("myHash.dll", CharSet = CharSet.Ansi)]
        public static extern IntPtr myHash(string filename);

    IntPtr ptr = myHash(fileA);
            char[] result = new char[72];
            Marshal.Copy(ptr, result, 0, 72);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage