我有一个致力于64位架构的项目。
现在,我希望将其迁移到32位系统。它利用了INT64指针操作。我应该对当前系统进行哪些更改?一些示例说明可能需要的一般更改将很有帮助。
PS:在运行代码时,它会引发错误"Invalid address specified to RtlValidateHeap( 004F0000, 02A90EB8 )",有时还会出现"Critical error detected c0000374"
我搜索了两个错误,但找不到解决方法。

最佳答案

将x64应用程序从一种bitbit迁移到另一bitbit(Windows平台)时要记住一些注意事项

  • 检查每个sizeof(),假设指针大小为8
    pointer = (INT64) (other_pointer + sizeof(val));
    
  • 如果您使用GUI工具包直接操作Windows句柄(例如MFC),请记住,在3​​2位系统(或仿真sysWoW-Windows on Windows)上运行时,HWND和其他内部指针使用较小的大小。
  • 注意#ifdef _WIN64宏点
  • 内联汇编是 BAD ,具有可移植性,而且内在函数通常是特定于平台的
  • 32位应用程序仅链接到32位库,请检查
  • 的依赖项

    最后,如果目标环境是x86_64,请记住,在Windows上,关于如何虚拟化32位应用程序的文件系统和注册表编写(它们具有专用的子位置)可能有所不同。

    祝好运。

    09-08 05:43