|  
 
 
如何调用vc写的dlll直接返回指针数组 
extern "C" unsigned char * ReadHid(void)  {     unsigned char * r;     //……     return r; }  
ref byte 当成数组处理,网上有很多。 这种类型还不算烦的。  
byte* pb=ReadHid(); 然后就随便你处理了 字节数组:byte b=*pb; pb++; 字符串:string str=Marshal.PtrToString(new IntPtr((void*)pb); 整数数组:int i=*(int*)pb; pb++; 结构数组:都可以  
在类前面加上unsafe是可以了, byte* pb = (byte*)ReadHid(); 但从这个unsafe单词里看是不安全的。 
因为要写一个c#的demo给客户调用dll。能否就以我这个dll原函数,高手能否帮忙写个以IntPtr调用我这个函数的例子呢  
还是用了unsafe指针的,测试程序也正常了,目前没发现什么问题,用pb[n]直接访问任一字节很方便。 
楼上说的不够详细还是没使用上,转来转去麻烦: 转字符串的,又不知道怎么再转回每个字节。 读整数的:冒似转出来一个整数,我要的是字节数组,而不是数组,就算是数组,又要改正在使用的dll原型unsigned char ×改为int *指针。 转结构体的:可能还用不上它。  
 |