Delphi XE8 和 fatal error F2039

标签 delphi delphi-xe8

使用 XE8 更新 1、Win 7 64 位并将单个组件添加到空文件夹中,我得到: 错误:[dcc32 fatal error ] F2039 无法创建输出文件 .\Win32\Debug\MountTest。

第一次测试可以编译并运行良好,但 XE8 必须关闭并重新启动才能再次编译。该组件是 Mitov Software 的仪表。 组件供应商称这是一个已知错误,无法修复。如果是这样的话,对我来说这就是一个精彩的项目和结束。 Delphi 真的走到了尽头吗?

我希望有人能以某种方式变出这只兔子。

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

  1. 从失败的应用程序开始(不会编译 2ed 时间)
  2. 删除所有使用的外部单元
  3. 删除对这些单元的所有引用
  4. 删除“使用”子句中的所有引用
  5. 注释代码直至编译

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

每次点击“运行”时,它都应该编译。 现在打开空白表单,只需触摸它,就需要重新编译。

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

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

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

最佳答案

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

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

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

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

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

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

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

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

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

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

关于Delphi XE8 和 fatal error F2039,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31709131/

相关文章:

delphi - 当源代码中存在 "|"时,IDE 将挂起。是Delphi XE8的bug吗?

windows - 一个独立的 Delphi 应用程序,也可以作为 Windows 服务安装

class - TObjectList<> 获取项目错误

xml - 无法使用 Delphi 中的 XML 绑定(bind)解析 XML 文本中的值

multithreading - PostMessage 在线程中返回 "invalid window handle"

delphi - 如何正确地将C与Delphi静态链接?

delphi - 将 JObject 转换为 JList

delphi - 古老的 Delphi VCL 应用程序看起来没有 Windows 主题或 VCL 风格

delphi - TVirtualStringTree,树结构的位置