首页 > > > C#调用C++的dll
//方法:api_ihuReadRawDataByTimeStr
//功能:查询报警数据
//参数说明:
//long serverhandle in 连接句柄
//char *tagnames in 标签点名
//char **tagvalues out 字符串数组,查询结果值
//IHU_TIMESTAMP *timestamps out 数组,查询结果时间戳
//返回:
//>0--IH函数返回错误
//0--成功
//<0-失败,其中-50:异常,-100:加载错误
C#中的声明:
[DllImport("IHAPIDLLS.dll", EntryPoint = "api_ihuReadRawDataByTimeStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int Api_ihuReadRawDataByTimeStr6(int serverhandle,[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0, ArraySubType = UnmanagedType.LPStr)] string[] argv, IntPtr timestamps2)
但是调用的时候报错:尝试读取或者写入受保护的内存。
请问这个输出类型的字符串数组char**对应C#中的哪个类型?
另外,我尝试着把char**这个参数改成ref IntPtr或者IntPtr、IntPtr[]、ref IntPtr[]、out IntPtr[]都报同样的错误,请问这到底是什么为什么?
这个问题困扰了我很久了,跪求大侠们的解答。谢谢!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/813/viewspace-3128444/ ,如需转载,请注明出处,否则将追究法律责任。