我正在开发的新 C# 程序遇到技术问题。在这个项目中,我需要与 TCP/IP 网络上的另一个非 Windows 系统进行通信。所有在其他系统上编写的软件都是用 C 完成的,任何其他未来的开发也将用 C/C++ 完成。协议全部由另一位工程师在 C 中完成,协议的定义全部使用 C typedef 结构定义所有变量并使用 memcpy 提取/放置对 C 非常有用的数据包。我所有的协议都作为 C 标头提供包含所有 typedef 和 struct 的文件以及将来对协议所做的任何更改都将以相同的方式完成。
我的问题是,是否有任何方法可以在 C# 中使用它们?
我试图将它们作为一个类编译到 DLL 库中,但由于 C# 只能使用托管 C dll,所以无法正常工作。如果我尝试编译为托管 C 类,它就会变得一团糟,因为协议中有很多数组,并且因为 C 代码必须符合一堆工厂规范,所以许多变量都是 typedef' d。现在我可以去重做 C# 中的所有结构,但这会花费很多时间,而且每次进行更改或向协议中添加某些内容时,我都必须重做。更不用说每次我这样做时都会出现错误的危险。
它与我的 C 项目的工作方式是,其他工程师只会向我提供更新的头文件。
那么有什么方法可以直接在 C# 中使用这些头文件,或者每次协议更新时我都可以进行自动转换?好吧,我基本上需要使用这个头文件从来自 TCP/IP 连接的数据流中提取数据(开始无法使用 memcpy)
使用 C# 的原因是因为我在 WPF 中使用了很多图形,而 Visual C++ 不支持 WPF
任何帮助或建议将不胜感激?