Delphi XE8和致命错误F2039

时间:2015-07-29 19:09:31

标签: delphi delphi-xe8

使用XE8更新1,Win 7 64位和单个组件添加到其他空文件夹我得到: 错误:[dcc32致命错误] F2039无法创建输出文件。\ Win32 \ Debug \ MountTest。

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

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

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

  1. 启动失败的应用程序(不会编译2ed时间)
  2. 删除所有使用的外部装置
  3. 删除对这些单位的引用
  4. 删除'使用'中的所有引用。条款
  5. 注释代码,直到编译
  6. 它应该在每次运行时编译(没问题)。现在向项目添加一个空白表单。不要对表单做任何事情只需添加它。将其添加到您的使用条款。

    每次点击Run都会编译。 现在打开空白表单并简单地触摸它以便需要重新编译。

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

    请注意,当您只是添加表单并触摸'它。无需代码。

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

5 个答案:

答案 0 :(得分:7)

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

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

您可以在How can I disable Castalia in XE8?

中找到禁用/启用Castalia的说明

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

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

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

  3. taskkill del 的批处理文件都不适用于构建前或构建后的事件。

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

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

  6. (我以前可以访问EMBT QC,并且有一些打开的门票。这些帐户似乎没有迁移到新的QP,我找不到我账户下的任何门票。)

答案 1 :(得分:3)

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

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

已安装XE8更新1

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

已安装AsyncPro - 仍在使用

安装了JEDI Jcl - 失败

删除JEDI Jcl - 现在正常工作

Trash JEDI完全 - 一切正常

JEDI Jcl版本3.48中的某些内容导致了这个问题。我可以使用我正在使用的JEDI组件进行编码而不会有太多麻烦,但这是一种耻辱。

答案 2 :(得分:1)

如何在构建之前自动终止“挂起”应用程序?

enter image description here

答案 3 :(得分:0)

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

删除JCL修复了问题。如果我是一个博彩人,我会仔细看看JCL Debug IDE扩展。

答案 4 :(得分:0)

Guy的..

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

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

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

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

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

如果全部完成,则无需升级到Delphi 10.1或“建议”。

重启Delphi并解决问题:=已解决!

顺便说一句: 需要花费一些精力才能找到这里发生的事情,因为Eclipse编译器遇到了与Delphi相同的问题。最后,所有这些都与早期版本的Android SDK中的错误有关,导致adb.exe将文件句柄保留为人质。