如何调用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 *指针。 转结构体的:可能还用不上它。
|