c# - 将数据从 C++ 传递到 C# - 映射文件与 CLI+UnmanagedMemoryStream

标签 c# c++-cli unmanaged-memory map-files

我需要经常将数据从 C++ 传递到 C#。它应该尽可能快,因为我正在编写超低延迟交易应用程序。

我有纯C++项目(稍后会移植到Linux)。我需要将数据从它传递到我的 C# 项目。我总是需要传递相同的结构(如果这很重要的话)。

结构看起来像这样:Ticker = "MSFT"Price = "30"Volume = "10"Side = "Buy"

我想有两个选择:

  • 编写 C++-CLI 包装器,它将 UnmanagedMemoryStream 从 C++ 传递到 C#
  • 使用内存映射文件

会是什么:

  • 更快
  • 更容易实现
  • 更容易移植到 Linux ?

最佳答案

Mono 完全不支持使用混合模式 C++/CLI 程序集(参见 here )。 Mono 仅支持纯 CLR C++ 程序集。
因此,如果您计划移植到 Linux,似乎其他可能性,例如内存映射文件,或 Matthew 建议使用 P/Invoke(Mono 支持,但它需要 some extra work)是您应该使用的。

关于c# - 将数据从 C++ 传递到 C# - 映射文件与 CLI+UnmanagedMemoryStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914757/

相关文章:

javascript - 如何使用asp.net c#访问多选下拉列表

c# - 获取最大元素的索引

c# - 无法将 .Net ConcurrentDictionary<K,V> 转换为 IReadOnlyDictionary<K,V> 接口(interface)?

c# - 如何将 Bitmap 对象转换为 Mat 对象(opencv)?

c++ - 视觉 C++ : Unable to invoke method from another class

c# - List.First() 是否返回一个新实例?

c++ - 围绕 avcodec_open/close 的线程锁定

c# - Parallel for 中的 Dispose 比常规 for 循环慢。为什么?

c# - 使用 UTF8 编码将 C# 字符串写入预分配的非托管缓冲区

.net - 非托管组件用于分配/分配的内存区域