关于C#调用托管C++DLL,传递的参数问题!
我在CLR将WIN32的类进行封装成托管的C++DLL,有个函数本来参数是unsignedchar数组的,但在C#上调用的时候却变成unsignedchar指针了,为什么...
我在CLR将WIN32的类进行封装成托管的C++DLL,有个函数本来参数是unsigned char 数组的,但在C#上调用的时候却变成unsigned char 指针了,为什么会这样?如何解决?
展开
1个回答
展开全部
这是正常的,在C++中如果一个函数的形参是一个数组,那么当你在传入对应数组实参的时候,实参自动转化为一个指向该数组第一个元素的同类型的指针,所以unsinged char[],在调用的时候实际上编译器传入的是一个unsigned char* ptr;而且该ptr指向数组unsinged char[]的第一个元素。
追问
那如果我想在C#也是同样传递一个数组,该如何修改呢?
追答
C#里没有指针,你可以使用引用来传递吧,我对C#不是很熟,不好意思。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询