【问题标题】:porting from 32 bit to 64 bit从 32 位移植到 64 位
【发布时间】:2018-01-24 00:24:51
【问题描述】:

我有使用 Visual C++ 构建的 Windows 应用程序。它正在 32 位 Windows 环境上构建和运行。现在我需要确保它适用于 windows vista / 7 64 位环境。在这个移植过程中我需要考虑什么?

【问题讨论】:

  • 您必须将其移植到 64 位还是必须确保它可以在 64 位操作系统上运行?
  • @Nikola,确切地说,我需要确保它可以在 64 位操作系统上运行。

标签: c++ visual-c++ 64-bit


【解决方案1】:

这不是从 32 位移植到 64 位,只是在 64 位机器上运行您的 32 位代码以确保它仍然有效。

这样做的方法是在 64 位机器上测试所有功能,就像每次发布新版本时一样,对吗? :-)

如果你真的想移植它(即将它编译为 64 位可执行文件),第一步就是尝试一下。您可能会发现它按原样工作。如果您尝试然后出现问题,我只会担心移植问题。

然后,也只有到那时,我才会去寻找原因。否则可能会浪费精力。

【讨论】:

  • 太真实了。我遇到的唯一重要的移植问题是假设指针是 4 字节并加载内存映射文件。其他一切都“正常工作”。
【解决方案2】:
【解决方案3】:

在以 x64 模式构建项目之前。

  1. 包含项目所需的所有必要 64 位 dll
  2. 在链接器中包含库文件 - 附加依赖项 - 配置属性。
  3. 在 C\C++ 中添加必要的预处理器 - 预处理器 - 配置属性。
  4. 启用 64 位警告 - 编译时编译器显示警告

  1. 将数据类型从int 转换为size_t 可能会丢失数据
  2. 存储指针地址
  3. 魔法号

有关移植时的错误和警告的更多信息,请参阅以下链接 http://www.viva64.com/en/a/0065/

【讨论】:

    【解决方案4】:

    需要注意的一点是,您是要将普通旧数据 (POD) 存储到文件中,还是通过 IPC 或套接字等将 POD 数据传递给其他应用程序。 我们也有假定 4 字节长和 4 字节指针的代码。不用说,我们删除了这些不合时宜的东西。

    编译器通常擅长发现其他类型的错误,例如 long 到 int 的转换等。因此通常只是注意编译器警告并相应地更改代码的情况。

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 2011-01-31
      • 1970-01-01
      • 2014-08-13
      • 2011-04-03
      • 2010-12-12
      • 2020-10-28
      • 2011-03-11
      • 2015-06-16
      相关资源
      最近更新 更多