【发布时间】:2017-09-05 10:07:36
【问题描述】:
我正在通过 UDP 从 C/C++ 应用程序接收数据。此应用程序正在将类的 memcpy 放入缓冲区并将其扔给我们。我们的应用程序是用 C# 编写的,我需要以某种方式理解数据。我们可以访问结构的头文件——一切基本上都是结构或枚举。我们无法更改数据传入的格式,并且头文件可能会经常更改。
我考虑过用 C++ 重写我们的 comms 类来接收数据,然后我可以更好地控制它的序列化,但这需要很长时间,而且我的 C++ 已经生锈了,更不用说我没有有很多 C++ 线程方面的经验,这是必需的。
我还创建了一些原型 C++ 库,其中提供了可通过 C# 访问的头文件,但我无法完全理解如何在 C# 本身中实际创建和使用类的实际实例(每个当我研究这个时,我看到的只是外部函数调用,而不是外部类型的使用)。
我也研究了编组。但是,由于数据可能会经常变化,我认为这是不得已而为之的方法,而且感觉很手动。
有没有人知道任何选项或对此问题有任何更有针对性的阅读或建议?
【问题讨论】:
-
"memcpy of the class" 长什么样子?它是否包含元信息或任何可以这样使用的东西?
-
如果你调用一个非托管 dll 的函数,它返回一个自定义格式的对象,你需要在 C# 中重建这个格式/对象(例如作为结构)并将对象转换成那个。
-
遗憾的是没有元数据。
-
@Noren,我有一个 C# 版本的 C++ 对象,我目前不确定如何进行实际的重建和转换。
标签: c# c++ udp unmanaged managed