德尔福XE2中的Dcu

时间:2011-09-27 14:08:30

标签: delphi delphi-xe2 firemonkey cross-compiling

对于firemonkey应用程序,delphi xe2中的* .dcu文件是否独立于平台。 here。适用于32位和64位以及其他操作系统。

如果是这样,dcu文件是如何设计的。它是类似于以前的(delphi 1-delphi xe)或类似中间语言(如java或.net)的东西

这个新的dcu会让dcu文件的反编译变得更容易。

这个问题的主要目的是了解有关firemonkey的新dcu文件的优缺点的一些细节。

2 个答案:

答案 0 :(得分:9)

  

用于firemonkey应用程序的delphi xe2中的* .dcu文件是   独立于平台。这里。适用于32位和64位等   操作系统。

不,他们不是; Delphi XE2为不同的平台生成不同的.dcu文件,每个平台的.dcu文件都在单独的文件夹中创建。

答案 1 :(得分:3)

为了让它更具洞察力,一些背景信息:

DCU或多或少是以下部分的组合

  1. 目标代码,它是正常静态编译的可重定位目标代码,就像C或C ++将生成的那样。
  2. 调试代码包含(如果我没有弄错,则为Topview变体)
  3. 某种形式的预编译头(接口)。
  4. 某些表示中的非特定泛型(*)
  5. 跨单位无法代码(树表示?)
  6. 我不知道所有这四个是否是单独的部分或它们是交错的。我的猜测是1 + 2被组合(因为这允许链接器中更通用的例程)并且有一个“休息”,其中包含3 + 4 + 5和其他一些元数据。

    由于标头可能依赖于系统单元和OS特定单元中的OS特定类型和符号,因此即使理论上只有最独立的单元可能是跨平台的。可能不值得努力打扰。

    就反编译而言,它与一般的反编译问题几乎相同,只有几个曲折:

    1. 尚未最终链接(对象)代码稍微容易分解
    2. 带有附加调试代码的
    3. 代码稍微易于编译。
    4. 但DCU格式依赖于版本且是专有的。
    5. 整个反编译过程非常依赖编译器和-version。
    6. 简而言之,它可能不比早期的Delphi编译器或随机C ++编译器的静态lib +头文件更容易。