代码之家  ›  专栏  ›  技术社区  ›  ckv

支持目前在32位操作系统中工作的64位操作系统

  •  1
  • ckv  · 技术社区  · 14 年前

    我有一个应用程序,它有许多服务和一个UI模块。所有这些都是在VC++6.0中开发的。荷兰皇家航空公司的总数为560荷兰皇家航空公司。

    它使用多线程、MFC和所有数据类型,如word、int和long。

    现在我们需要支持64位操作系统。我们需要对产品进行哪些更改。

    通过支持,我的意思是既像在64位操作系统上运行应用程序,也像使用64位内存一样。

    编辑:由于时间限制,我不允许迁移到VS2005或任何高于VC6.0的版本。

    所以需要做些什么改变。

    5 回复  |  直到 14 年前
        1
  •  5
  •   Richard    14 年前

    64位Windows包括32位via wow。任何32位应用程序都应该继续工作。

    (只有司机 以匹配操作系统的位。)

    [注释:任何类型的插件都不是单独的应用程序,而是其他需要匹配主机的应用程序所使用的DLL。在这种情况下,如果64位扩展与32位主机不兼容,您也会遇到同样的问题。]

        2
  •  4
  •   Rup    14 年前

    正如Richard所说,32位版本应该继续工作,除非你有一个驱动程序、一个shell扩展或其他东西。

    但是,如果您确实需要升级代码,您也需要升级编译器:我认为在VS2005或更高版本之前,MFC没有很好的64位支持。我建议您在VS2010中获得32位代码构建-这将 简单点-然后开始考虑将其转换为64位。当然,您可以在VC6中保留32位版本的产品,但随后又增加了维护人员的负担。

    通过将编译器翻转到64位并打开完整的警告,您可能会获得大部分转换方法——特别是考虑到代码的大小,可能无法对其进行全面检查。需要注意的一件事是,指针存储在整数、双字等中,现在可能太短而无法容纳指针-现在需要双字指针等-但我认为警告确实能抓住这一点。

    或者,如果这在许多组件中,那么您可能只需要将几个组件迁移到64位就可以了。然后,不幸的是,两个版本之间的通信存在数据长度问题。

        3
  •  2
  •   MSalters    14 年前

    必须 转换为较新的编译器。时间限制是不相关的。VC6编译器无法生成64位代码。它生成的每个指针对于初学者来说都是32位。如果需要访问“64位内存”,即上面的内存 0x00000000FFFFFFFF 那么32位是不够的。

        4
  •  1
  •   Dan Puzey    14 年前

    如果您不想把您的IDE改成本质上支持64位编译和调试的IDE,那么您的工作就变得不必要的复杂了。你确定它不值得被打吗?

        5
  •  0
  •   Puppy    14 年前

    只在64位操作系统上运行,您不需要做任何更改。这就是ww64的目的。

    但是,如果您希望以本机方式运行64位(即访问64位内存空间),则必须编译为64位。这意味着使用支持64位的IDE。这是不可能的。

    如果用合适的编码标准编写的程序(主要是不假设指针的大小,如int指针转换),那么大多数程序转换为64位应该没有问题。你会得到很多关于std::size\t转换的警告,但是这些警告毫无意义。