我有一个c++写的DLL,可是参数有一个char **p,DLL导出的接口函数为GetClock(int pakbus_address,int device_type,char **return_data,int *return_data_len),return_data存储的是返回结果,请问在C#里如何调用这个函数得到我想要的返回值呢。
[DllImport("simplepb.dll",EntryPoint = "GetClock")]
public static extern int GetClock(int pakbus_address, int device_type, StringBuilder return_data, ref int return_data_len);
使用StringBuilder接收到的是乱码。
把你的函数声明写成这样。
public static extern int GetClock(int pakbus_address, int device_type, ref System.IntPtr return_data, ref int return_data_len) ;
然后通过Marshal.PtrToStringAnsi函数获取返回的字符串试试。
string result = Marshal.PtrToStringAnsi(return_data);