【问题标题】:Delphi XE8 and Fatal Error F2039Delphi XE8 和致命错误 F2039
【发布时间】:2015-10-20 22:42:56
【问题描述】:

使用 XE8 更新 1、Win 7 64 位和一个组件添加到原本为空的文件夹中,我得到: 错误:[dcc32 致命错误] F2039 无法创建输出文件 .\Win32\Debug\MountTest。

测试将在第一次编译并运行良好,但 XE8 必须关闭并重新启动才能再次编译。该组件是 Mitov Software 的仪表。 组件供应商说这是一个没有修复的已知错误。如果是这样,它对我来说是一个展示和项目结束。真的是 Delphi 的终点吗?

我希望有人能以某种方式把这只兔子从帽子里拉出来。

这是我为隔离问题所做的。

  1. 从失败的应用程序开始(不会编译 2 次)
  2. 移除所有使用的外部设备
  3. 删除对这些单位的所有引用
  4. 删除“使用”子句中的所有引用
  5. 在编译之前注释代码

每次你点击运行时它都应该编译(没问题)。现在向项目添加一个空白表单。不要对表单做任何事情,只需添加它。将其添加到您的 uses 子句中。

它应该在你每次点击运行时编译。 现在打开空白表单并简单地触摸它,它需要重新编译。

当您运行该应用程序时,当您再次运行它时,它又会失败。

请注意,当您简单地添加表单并“触摸”它时会发生这种情况。无需代码。

这个问题不是我的代码有问题——不可能。它是 UI 中的错误 - 一定是。

【问题讨论】:

  • 这可能是这个神秘组件的问题。这里没有真正的细节,所以很难看到这里的任何人都可以提供帮助。
  • 或者你的系统有问题。从字面上看,它可以是任何东西。除非你能提供更多细节,否则没人能帮忙。
  • 我遇到了这个问题,解决方案是确保“应用程序体验”服务正在运行。
  • 一个明显的可能性是应用程序实际上并未完全终止。如果以前的可执行文件无法删除并替换为新的可执行文件,则尝试重建可能会失败 - 如果有问题的 exe 仍然存在,则可能会发生这种情况。您是否在任务管理器中检查过该进程是否完全退出?

标签: delphi delphi-xe8


【解决方案1】:

男人的..

没有理由升级到 Delphi 10.1,因为所有以前的版本都配备了旧版本的 Android SDK。

现在,如何解决这个烦人的问题:

只要找到Android SDK所在的地图即可。 请参阅:工具/选项/Delphi 选项/SDK 管理器/Android 位置

现在以管理员身份运行 ..\sdk\tools\android.bat 这将显示 Andoid SDK 管理器。

接下来是更新到最新的 Android SDK 和 SDK 工具。

如果全部完成,您不必升级到 Delphi 10.1 或任何“建议”。

重启 Delphi,问题:= 解决了!

顺便说一句: 发现这里发生了什么需要一些努力,因为 Eclipse 编译器遇到了与 Delphi 相同的问题。最后,所有这些都与早期版本的 Android SDK 中的错误有关,导致 adb.exe 将文件句柄作为人质。

【讨论】:

    【解决方案2】:

    我在带有 XE8 的 Win 7 Pro 64 位上也遇到了这个问题。

    删除 JCL 解决了这个问题。如果我是赌徒,我会仔细研究 JCL Debug IDE 扩展。

    【讨论】:

      【解决方案3】:

      找到了。 我决定从头开始我的开发系统并发现了问题。

      我在原始磁盘上安装了 Windows 10

      已安装 XE8 更新 1

      为 XE 8 安装了 MITIOV Instruments 并对其进行了测试。所有工作查找

      已安装 AsyncPro - 仍在工作

      安装了 JEDI Jcl - 失败

      删除 JEDI Jcl - 现在可以使用

      彻底清除 JEDI - 一切正常

      JEDI Jcl 3.48 版中的某些内容导致了该问题。我可以围绕我正在使用的 JEDI 组件编写代码而不会遇到太多麻烦,但这很可惜。

      【讨论】:

      • 认为 XE8 包管理器提供的JCL 和JVCL 可能会解决这个问题——我错了。 JCL 仍然不能与 XE8 一起使用。
      【解决方案4】:

      巧合的是,我昨天刚刚在测试我移植到 XE8 的一些组件时遇到了这个问题。 输出文件在我的例子中是项目可执行文件。

      在花了几个小时试图弄清楚发生了什么(包括重新配置我的 AV 软件、完全禁用它、将项目移动到其他位置等)之后,我能够解决问题通过禁用 Castalia。如果我在没有 Castalia 的情况下运行 IDE,则不会出现问题。如果我再次启用 Castalia,它会再次开始发生。

      您可以在 How can I disable Castalia in XE8? 中找到禁用/启用 Castalia 的说明

      我正在删除上述内容,因为该问题再次出现(禁用了 Castalia)。进一步的调查显示了几件事:

      1. 问题似乎与调试器中引发的任何类型的异常有关(即使是在代码中处理的异常)。在调试器异常对话框中单击 BreakContinue 将一如既往地工作。但是,下一次编译或构建应用程序的尝试失败并出现 F2039 错误。在 Windows 资源管理器中删除可执行文件允许编译和运行一次,然后错误再次出现。

      2. 重新启动 IDE 可以解决问题,直到出现下一个调试器异常。

      3. taskkill 或带有 del 的批处理文件在构建前或构建后事件中都不起作用。

      4. Embarcadero 有一个open QC entry for it,表示它在 XE7、XE7.1 和 XE8 中被报告,目前是一个开放的内部票证。我找不到将上述两点中的信息添加到新的基于 JIRA 的质量门户中的未结工单的方法。也许有权访问并且可以这样做的人会代表我(或至少添加此帖子的链接)。

      5. 它未链接到特定项目。最初的答案(如上所述)与将一些组件从早期版本移植到 XE8 时的测试应用程序有关。当问题再次出现时,是在一个全新的项目中,完全不相关,不使用任何非标准组件。

      (我之前可以访问 EMBT QC,并且有一些未结的票证。这些帐户似乎没有迁移到新的 QP,我在我的帐户下找不到任何票证。)

      【讨论】:

      • 是的 - 这就是诀窍。我可以在不重构的情况下相处,但是删除 Castalia 后我还缺少什么。
      • Ken - 感谢您发布此修复程序。我在放弃整个项目和 Delphi 的过程中处于领先地位。现在我可以继续了。
      • 我认为停止 Castalia 是解决方案,但事实并非如此。第二天,I T' S B A C K!
      • 我的没回来,昨天用了一整天。
      • 我回来了。当我开始以管理员身份运行 IDE 时,我还认为我已经解决了这个问题。似乎工作了一段时间,然后又回来了。
      【解决方案5】:

      在构建之前自动杀死你的“挂起”应用程序怎么样?

      【讨论】:

      • 好主意,但仍然失败。我输入:del $(OUTPUTFILENAME) 但该命令返回:访问被拒绝。
      • 不起作用。 IDE 不会删除它。我尝试同时使用构建前和构建后事件。我尝试终止任务并使用批处理文件删除 .exe。没有工作。请参阅我的复制步骤。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2016-01-19
      • 2015-08-11
      • 2023-03-13
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多