从托管C ++访问本机C ++数据

时间:2009-12-29 18:08:38

标签: c++ native managed

我有一个本机C ++库,它使用大型静态缓冲区(它从设备获取数据)。

假设这个缓冲区定义如下:

unsigned char LargeBuffer[1000000];

现在我想将此缓冲区的一部分暴露给托管C ++,例如:当库在LargeBuffer[5000]存储1000字节的新数据时,我想对托管C ++代码执行回调,将指针传递给LargeBuffer[5000],以便托管C ++可以访问那里的1000字节数据(直接如果可能,即没有复制数据,以达到最佳性能)。

让托管C ++代码访问此本机数组中的数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

托管C ++可以很好地访问非托管内存。您只需传入指针并在托管c ++中使用它。

现在,如果您希望将该数据传递到其他.NET语言,则需要将该数据复制到托管内存结构或使用C#中的不安全代码

答案 1 :(得分:1)

从.net 2.0和新的IJW开始,您应该能够直接从CLI C ++访问缓冲区。

只要你没有指定“#pragma unmanaged”,那么代码将被编译为托管形式,允许直接访问。

相关问题