【发布时间】:2014-06-29 12:12:21
【问题描述】:
我们将要修改的系统由一堆通过文件进行通信的应用程序组成(一些写入文件,其他读取文件等等)。这些应用程序是用 C++ 编写的,其中一个现在要重写为 C#。问题是这个新应用程序需要读取一个文件,该文件包含另一个应用程序使用 C++ fwrite 写入的 C++ 结构。我有一个包含此结构的 C++ 库,我想我可以在我的 C# 代码中引用它,但我无法控制生成该文件的应用程序。
是否有可能,如果是的话,用 C# 代码读取已知的 C++ 结构?
【问题讨论】:
-
结构体是如何写入文件的?为此使用 XML 等通用数据结构可能更简单。
-
我错过了什么问题。如果您在 c# 中以相同的顺序创建具有相同字段的相同结构,则读取文件并使用 Marshal.PtrToStructure 将其转换为结构
-
使用 XML 可能更简单,但如果您仔细阅读问题,它会说“但我无法控制生成文件的应用程序”,这意味着我无法更改生成文件的应用程序。然后无法更改格式
-
在C#中定义结构,将文件读入
byte[],使用Marshal.PtrToStructure。问题是什么?
标签: c# c++ struct marshalling