这个标题应该是很多地方都存在的吧,但是小编搜了一堆的资料却发现没有一个是对应的上的,最终在本人师傅解释下解决
和大多数的博主一样,小编也是引用第三方的dll(c++写的),在传入参数的时候运行报错
参数类型unsigned char*,小编在众多的博客中找出了一些C#对应得类型,但是结果都报错,你说气不气哦
//c++:unsigned char * ---- c#:ref byte
//c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
//c++:unsigned char * ---- c#:[MarshalAs(UnmanagedType.LPArray)] Intptr
最终解决方案:需要实例化参数和为参数分配长度
//C++中
getMethod(unsigned char * IDN)
//C#中调用方法时参数要改为
byte[] IDN=new byte[100];
getMethod(1,"COM3",115200,IDN);
//C++中
double LIVPower[501] = {0}
//C#中调用方法时参数要改为
double[] LIVPower=new double[501];
没有深厚的技术无法做出产品,不懂业务也是如此,技术和业务相辅相成,缺一不可。