我有一个应用程序,它是用
托管
在托管的
现在
如果我的操作是正确的,那么将接收到的
谢谢, Vikram
C#
编写的,并使用C
编写的DLL。通过一些委托(函数指针),我已经成功调用了一个C
函数。这个函数预计会对一些数据进行大量处理,然后将处理后的二进制数据与数据大小一起返回给C#
代码。托管
c#
函数的原型为:
private unsafe delegate void MyCallback (IntPtr cs_buf, Int32 cs_size);
我正在从我的C代码
中调用它:void* c_buf = NULL;
int c_size = 0;
.... some processing here to fill buf and size......
MyCallback (c_buf, c_size);
在托管的
C#
代码中,我需要从MyCallback
调用一个原型为void foo (byte[] cs_buf, int cs_size)
的函数。现在
cs_size
值没有问题,但是从C代码传递二进制缓冲区到C#代码并将其用作byte[]
的正确方式是什么?如果我的操作是正确的,那么将接收到的
IntPtr cs_buf
转换为byte[]
的推荐方法是什么?谢谢, Vikram
foo
的原型以接受参数为其他类型而不是数组。 - Julien Roncaglia