在 .net 项目中使用 Visual C++ 与 CLI (cpp) 创建的二进制文件的差异

问题描述 投票:0回答:1

我使用可视化 cpp 程序创建了一些二进制文件。 关于数据:有嵌套的结构,包含字节、字、双字等信息。结构还包含数组[嵌套结构]。 该数据使用可视 cpp 项目使用 fwrite 写入二进制文件。

现在我尝试在 C# .net (4.8) 框架项目中使用 CLI (cpp) 创建类似的二进制文件。 尽管从这些 cpp 文件中读取的信息是正确的。但是当我尝试在 Cli cpp 中使用 fwrite 重新创建此类文件时,我得到了不同格式的文件。

例如。当我在记事本中打开时,行数会有所不同。 在少数文件中,缺少像 b 这样的随机字符。这一切。

请指导如何使用 cli 创建类似的结构?我需要改变一些编译器等吗?如果是这样指导我。谢谢

我尝试使用编译指示包等,但我不知道该怎么做。

c# c++ .net visual-c++ binaryfiles
1个回答
0
投票

听起来您正在尝试实现某种二进制序列化,其中您将数据的表示形式写入磁盘,然后在不同的程序中恢复它。如果这是您的用例,那么您不应该简单地将字节流发送到

fwrite
- 对象的内存中表示在调试/发布版本、不同平台或不同工具链(例如 C++/CLI)之间不稳定。 C++/CLI 与 C++ 不二进制兼容,因为 .NET 平台对其数据布局的要求与本机运行时不同。

如果您想要稳定的数据二进制序列化,您应该寻找适合您用例的协议; libcereal 在这方面是一个非常有趣的候选者,它是由 Google 的“协议缓冲区”格式的设计者之一开发的。检查一下,它可能会帮助你在这里做你想做的事。

© www.soinside.com 2019 - 2024. All rights reserved.