ITPub博客

首页 > > > C#调用C++的dll

C#调用C++的dll

作者:flynike 时间:2019-10-24 10:29:41 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-26

  • 博文量
    205
  • 访问量
    9820