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