更新部分直接看文章最后!
如题,最近一段一直在搞工控类项目的上位机调度软件开发,由于扫描模块是余博用C++写的, 所以涉及到混合编程的问题了。
C#调用C++DLL的方法网上都有,把DLL放进exe的生成目录内,然后引用System.Runtime.InteropServices命名空间,然后在主类内部加上外部引用声明就好了。
[DllImport("CLMS511Data_MFC.dll", EntryPoint = "CLMS511Data", CallingConvention = CallingConvention.Cdecl)]
public static extern void clms511data(ref Int32 m,ref Int32 n);
具体声明如上,EntryPoint是DLL内对应的方法名,下面的方法命是自己重命名的,这个随意,后面调用就用这个名字。修饰符public可以换别的或去掉,其他照写吧。
重点就是在这里,dll内的方法根据接口和余博的描述看,无返回,但接受两个Int32型数组指针,方法格式为大致为:
void function(int32* a,int32* b)
C++DLL的部分功能就是读取两个数组指针&#