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

64位平台编程

  •  2
  • Vaibhav  · 技术社区  · 16 年前

    在处理.Net应用程序(比如说Asp.Net应用程序)时,与在32位平台上工作相比,在处理64位平台时的工作方式有什么不同。

    既然你在研究这个框架,而且这个框架为你处理了大部分事情,我会想象的很少,对吧?

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Sean    16 年前

    如果您使用的是p/invoke,那么您需要确保有64位版本的dll可用。如果你调用微软提供的dll,比如kernel32,这不是问题,因为它们在32位和64位平台上有相同的名称(奇怪,我知道),所以你的64位应用程序将隐式链接到正确的版本。但是,如果您使用的是第三方DLL,而您的64位应用程序尝试链接到32位DLL,则会出现运行时异常。

    这也意味着,如果使用进程内COM对象,则会出现问题。64位应用程序可以调用32位的进程外COM对象(反之亦然),因为您正在跨越进程边界,COM将为您处理封送处理。

    除此之外,框架为您处理了大部分事情。您不必担心指针大小,clr类型有显式的大小(int总是32位,long总是64位)。在一个纯粹的.NET世界里,没什么好担心的。当你开始在沙箱外移动时,你必须更加小心。

        2
  •  2
  •   Martin v. Löwis    16 年前

    在两种情况下,考虑64位ness可能会很有趣:

    1. 您可以使用long类型,而不必担心性能:在64位版本中,long适合一个寄存器,而在32位版本中,JIT代码需要多个机器指令才能执行一个long操作。