Ich bekomme von meiner dll einen string zurück der so aussehen kann:
54738cru488vuwevu8null7943n50m8j934cm3u53n45u34nmu vnull
Die dll returned einen char*.
den char* kann ich dank compiler in meinem code als IntPtr marshallen.
[DllImport("Beispiel.dll")]
public static extern IntPtr beispiel(int beispiel);
Das funktioniert auch so weit.
um den string hinter dem pointer zu bekommen wollte ich jetzt Marshal.PtrToStringAnsi benutzen.
Da kommt es dann auch schon zu meinem problem.
Der return string der dll enthält immer 1 !!! null zeichen. Marshal.PtrToStringAnsi gibt aber alle zeichen bis zum ersten null zeichen zurück.
Also wie bekomme ich jetzt meinen string oder wie kann ich die größe des strings auf den gezeigt wird bekommen um dann die überladung von Marshal.PtrToStringAnsi(IntPtr, int) zu nutzen
PS: Ich werde kein unsafe verwenden
54738cru488vuwevu8null7943n50m8j934cm3u53n45u34nmu vnull
Die dll returned einen char*.
den char* kann ich dank compiler in meinem code als IntPtr marshallen.
[DllImport("Beispiel.dll")]
public static extern IntPtr beispiel(int beispiel);
Das funktioniert auch so weit.
um den string hinter dem pointer zu bekommen wollte ich jetzt Marshal.PtrToStringAnsi benutzen.
Da kommt es dann auch schon zu meinem problem.
Der return string der dll enthält immer 1 !!! null zeichen. Marshal.PtrToStringAnsi gibt aber alle zeichen bis zum ersten null zeichen zurück.
Also wie bekomme ich jetzt meinen string oder wie kann ich die größe des strings auf den gezeigt wird bekommen um dann die überladung von Marshal.PtrToStringAnsi(IntPtr, int) zu nutzen
PS: Ich werde kein unsafe verwenden