3

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

假设这个缓冲区是这样定义的:

unsigned char LargeBuffer[1000000];

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

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

4

2 回答 2

4

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

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

于 2009-12-29T18:15:37.747 回答
1

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

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

于 2009-12-29T18:52:53.053 回答