首页 > > > C#调用C++的dll
C++封装的函数
int api_ihuReadCurrentValue(long serverhandle,int number_of_tags,char **tagnames,IHU_TIMESTAMP *timestamp,int *tagerrs,char *retmessage);其中
IHU_TIMESTAMP是一个结构体,里面只有两个long类型的变量。
我在C#中先是定义了IHU_TIMESTAMP结构体
[StructLayout(LayoutKind.Sequential)]
public StructIHU_TIMESTAMP
{
public int Seconds;
public int Seconds1;
}
然后我在C#中这样调用:
[DllImport("IHAPIDLLS.dll", EntryPoint = "api_ihuReadCurrentValue", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int Api_ihuReadCurrentValue(int serverHandle, int number_of_tags, ref string[] tagnames, out Single tagvalues, ref IHU_TIMESTAMP timestamps, out int tagerrs, out string retmessage);
结构报错:尝试读取或者写入受保护的内存。通常指示该内存已损坏。
请问 是这样子调用吗?C++翻译成C#的类型对吗?小弟对C#调用C++的dll不熟悉,跪求各位大牛解答啊!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2618/viewspace-3160938/ ,如需转载,请注明出处,否则将追究法律责任。