十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“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”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!