C# PInvoke aus strings Erklärung
In C# und PInvoke, wie gebe ich einen string-Puffer, so dass die C-DLL füllt und zurückgibt? Was werden die PInvoke-Erklärung?
Der C-Funktionsdeklaration ist
int GetData(char* data, int buflength);
In C#, ich habe erklärt es als
[DllImport(DllName)]
static extern Int32 GetData([MarshalAs(UnmanagedType.LPStr)]StringBuilder receiveddata, Int32 buflen);
Ist es richtig? Ich bin vorbei an der StringBuilder-variable wie diese
int bufferLength = 32;
StringBuilder data = new StringBuilder(bufferLength);
int result = GetData(data, bufferLength);
Ich würde gerne wissen, ist es richtig oder nicht?
Dank
- Es ist richtig, wenn es funktioniert. Es gibt keinen offensichtlichen Grund, warum es nicht funktionieren sollte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, es ist richtig.
genannt wie diese:
Wollte ich einmal mehr Kontrolle über die bytes zurückgegeben, die von Funktion und habe es wie folgt aus:
wie folgt verwendet:
Ich glaube nicht, dass mit MarshalAs-Attribut notwendig. StringBuilder ist eine richtige Wahl für char* out.
Ich denke, es wird gut sein, um das hinzufügen der CharSet-Eigenschaft, da Sie den Umgang mit strings hier.
Wie diese: