温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#怎么调用VC DLL

发布时间:2021-08-19 09:24:40 来源:亿速云 阅读:167 作者:chen 栏目:编程语言

本篇内容主要讲解“C#怎么调用VC DLL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么调用VC DLL”吧!

本人认为用C#调用VC DLL是很有用的知识点,我自己感觉很好用啊,不知道别人用我这个方法是否好用。

VC:

比如想要用C#调用的VC的函数是:

A( int* b ),

因为指针在C#里不容易接,所以这时候我就会在VC里稍微改变一下,

定义一个结构体:

C{ int num; int* b },

之后把那个调用的函数改为:

A( C &c )。

C#:

首先呢,需要引入结构体:

[StructLayout(LayoutKind.Sequential)]  public struct C  {  public int num;  public IntPtr b; //注意,这里用的是IntPtr  }

然后,引入接口函数:

[DllImport("DLL_NAME.dll")]  extern static void A(out C c); //这里的out也可以用ref

然后,调用:

C c = new C();  A(out c);

***我们需要把输出的这个c转化为一个int类型的数组,这样才好用:

int v = c.num  int[] x=new int[v];  int size = System.Runtime.InteropServices.Marshal.SizeOf(new int()); //这里是为了算清楚int类型步长  for (int i = 0; i <  v_points_out.points_num; i++)  {  int p = (int)System.Runtime.InteropServices.Marshal.PtrToStructure(new IntPtr(c.b.ToInt32() + size * i), typeof(int)); //取出每个值  x[i] = p;  }

到此,相信大家对“C#怎么调用VC DLL”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI