在C#的PInvoke中,我如何传递字符串缓冲区以便C DLL填充并返回?PInvoke声明应该是什么?
C函数声明为:
在C#中,我已经将其声明为:
C函数声明为:
int GetData(char* data, int buflength);
在C#中,我已经将其声明为:
[DllImport(DllName)]
static extern Int32 GetData([MarshalAs(UnmanagedType.LPStr)]StringBuilder receiveddata, Int32 buflen);
这样传递StringBuilder变量是正确的吗?
int bufferLength = 32;
StringBuilder data = new StringBuilder(bufferLength);
int result = GetData(data, bufferLength);
我想知道这是否正确?
谢谢