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