En C# PInvoke, comment je passe un tampon de chaîne de sorte que la DLL C le remplit et retourne? Quelle sera la déclaration PInvoke?C# PInvoke out déclaration de chaînes
La déclaration de fonction C est
int GetData(char* data, int buflength);
En C#, je l'ai déclaré comme
[DllImport(DllName)]
static extern Int32 GetData([MarshalAs(UnmanagedType.LPStr)]StringBuilder receiveddata, Int32 buflen);
est-il exact? Je passe la variable StringBuilder comme ceci
int bufferLength = 32;
StringBuilder data = new StringBuilder(bufferLength);
int result = GetData(data, bufferLength);
Je voudrais savoir si c'est correct ou pas?
Merci
Il est correct si cela fonctionne. Il n'y a pas de raison évidente que ça ne marche pas. –