【问题标题】:Will compiling a DLL in Delphi 7 on a 64bit OS result in a 64bit DLL?在 64 位操作系统上在 Delphi 7 中编译 DLL 会产生 64 位 DLL 吗?
【发布时间】:2011-09-12 18:06:13
【问题描述】:

正如标题所示!

我正在尝试获取 64 位 dll

【问题讨论】:

  • 从技术上讲,您应该没有理由可以在 32 位计算机上编译 64 位 dll。你为什么不简单地研究一下如何编译一个Delphi dll所以它是一个64位的dll。
  • 编译器基本上是一个以文本文件为输入的计算机程序,并创建一个EXE文件。该程序遵循逐步算法从文本文件创建 EXE。但无论在什么操作系统上运行,编译器都是同一个程序。
  • 你需要有一个 Delphi/编译器版本,知道如何编译成 64 位 - Delphi 7 当然....仅仅在 64 位操作系统上运行编译器根本没有帮助
  • 在蓝色房子里烤蛋糕会产生蓝色蛋糕吗?
  • @dthorpe:根据颜色强度,蛋糕可能看起来是蓝色的。 :)

标签: delphi delphi-7


【解决方案1】:

编译程序意味着将您的源文件转换为 CPU 操作码(除此之外,它必须生成一个可执行映像,该映像可以在其设计的操作系统上运行,尊重操作系统 ABI - 应用程序二进制接口)。每种类型的 CPU 都有自己的一组操作码,即使 Intel x86 架构在 16 位、32 位和 64 位操作码之间有很多相似之处,也有足够的差异,而 ABI 无论如何也是不同的。

创建 64 位 exe/dll 意味着也使用新的 64 位 ABI 生成 64 位操作码,为此必须编写编译器以“了解”它们,编译器可以做什么由编译器如何定义它本身是编写的,而不是由运行它的系统编写的。 Delphi 7 编译器“不知道”关于 64 位 CPU 和 exe/dll ABI,因此无法生成它。 Delphi XE 也是如此。下一个版本应该是第一个带64位编译器的,你可以等着,或者如果你赶时间的话有一些部分兼容的编译器,比如FPC。

【讨论】:

    【解决方案2】:

    所有遵循 16 位 Delphi 1 的 Delphi 发布版本都发出 32 位目标。目前您的选择是:

    1. 等到即将发布的 64 位 Delphi 版本。我们预计今年某个时候会出现这种情况,但您的 port will be non-trivial
    2. 端口到FreePascal。同样,一个重要的端口。
    3. 移植到完全不同的语言:比移植到 Free Pascal 还要多工作。
    4. 继续运行 32 位代码。

    【讨论】:

    • 我认为 Delphi 1 编译器生成 16 位二进制文​​件。还是两者都能编译?
    • 如果您构建 Delphi 1 可执行文件,执行四次,然后将结果连接在一起,结果可能是 64 位,对吗? :-)
    • @Warren:要是这么简单就好了!您忘记了除了连接代码之外,您还应该确保这四个部分将并行运行。因此,如果没有额外的技巧,生成的二进制文件很可能不会在内核数少于 4 的处理器上运行。:)
    【解决方案3】:

    不。 Delphi 7 于 2002 年发布;第一个 AMD64 处理器于 2003 年发布。Delphi 7 不知道如何生成 64 位代码。

    【讨论】:

      【解决方案4】:

      没有。

      【讨论】:

      • @andreas 不是原创 ;-) stackoverflow.com/questions/5031604/…
      • @David 我看过你的,但老实说,这个问题感觉很合适:简明扼要,无需提及 FreePascal 或下一个将(很可能)包含 64 的 Delphi 版本位编译器。
      • @Andreas Rejbrand:抱歉,但这不是最好的答案,最好的答案是:stackoverflow.com/questions/1732348/…
      • 可悲的是,我上面提到的答案刚刚被删除。嘘!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2011-09-05
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      相关资源
      最近更新 更多