我们有一个在 32 位 Windows 7 上运行的 32 位 C++ GUI 应用程序。我们计划将带有 C++ 应用程序的服务器迁移到 64 位 Linux。 我们注意到长类型在 64 位中更大。 这与从 64 位传递到 32 位的客户端-服务器消息不兼容。 有什么好的方法可以解决这个不兼容的问题呢?我们需要更改代码吗?如何?或者我们是否使用第三方软件进行转换?这是什么软件?
int32_t
和uint32_t
类型等,所以你可以根据你的需要专门选择类型。
在您发送的所有结构中将所有
long
类型替换为 int32_t
可能需要大量工作,特别是如果它是一个大项目,但您(希望)只需要做一次。解决这个问题的另一种方法是将数据序列化为文本格式,然后在接收端反序列化它,这有一个很大的优点,它将使通信几乎完全独立于平台。
此外,类型
long
在 Windows64 中仍然是 32 位长(与 64 位长的类型 WPARAM
、LPARAM
、void *
、ptrdiff_t
、size_t
、intptr_t
、uintptr_t
)不同).
详细信息请参见:https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models