IIn*_*ble 6 .net c# c++ interop c++-cli
我正在评估为本机应用程序实现插件基础结构的可能性,该应用程序允许使用托管代码编写扩展.插件将在本机堆上分配的大( - )浮点缓冲区上运行,这些缓冲区在内存占用方面要复制相当昂贵.因此,插件应该能够直接在本机内存上运行.
据我所知,可以通过使用Unsafe Code和Pointers从托管代码访问本机内存(据我所知,这是.NET框架中唯一这样做的规定).为了简化插件的开发,我宁愿不公开这个工件并提供代理机制,以便可以像托管集合一样访问缓冲区.
对于实现(例如,C++/CLI互操作层很好)或特定的.NET运行时版本没有限制.可以假设缓冲区也具有固定大小; 该插件只会修改内容.
是否有可能实现满足上述要求的基础设施,如果存在,有哪些选择?
是否有可能实现满足上述要求的基础设施,如果存在,有哪些选择?
您将无法直接将本机数据视为托管阵列,但您可以通过C++/CLI公开图层,该图层允许直接,可索引地访问该内存.
例如,假设您有一个由几百万个双精度浮点值组成的缓冲区.您可以轻松地创建一个C++/CLI ref class,通过索引器将窗口暴露到该缓冲区,甚至更好IList<T>.
这可能允许它从C#中使用,就好像它是正常的IList<T>,而不复制数据,因为包装类只需要存储缓冲存储器位置.
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |