【问题标题】:Delphi Exe throws Exception code: 0xc0000005 only on Windows 7 64 BitDelphi Exe 抛出异常代码:0xc0000005 仅在 Windows 7 64 位上
【发布时间】:2013-12-10 18:34:04
【问题描述】:

我有一个可执行文件。 Exe 是从 Delphi 版本 5 编写的,因为代码是用 Delphi 编写的。此 exe 在 32 位操作系统的 Windows XP、Windows 7 上成功运行。但相同的可执行文件在 64 位操作系统的 Windows 7 上不起作用。它会抛出以下错误代码异常代码:0xc0000005。

唯一的选择是重新编译 Delphi 代码并使其与 Windows 7 64 位操作系统兼容。 我有谷歌,但没有找到任何合适的文章。因此,有人可以帮我解决这个问题。

我有一个好主意,让可执行文件兼容 32 位和 64 位,但仅限于 .NET Framework。所以请帮帮我。

【问题讨论】:

  • 您是否真的阅读了您建议用户下载软件的页面上的细则?我认为他们做到了,因此礼貌地拒绝遵循这个“建议”......
  • 任何声称针对特定 NTSTATUS 错误提供一刀切解决方案的网站都在提供恶意软件。永远不要访问这样的网站,更不用说听从他们的建议并下载任何东西了。
  • 换句话说,它正在做一些需要提升特权的事情。它在您的 32 位 Windows 中工作的原因可能不是因为它是 32 位,而是因为它禁用了 UAC。再次尝试右键单击 .exe 并“以管理员身份运行”。
  • @FreeConsulting,大卫就在这里。尝试转到链接http://www.wiki-errors.com/wiki-errors.php?wiki=myerror,将myerror 替换为您想要的任何内容。这只是样板文本,声称拥有一款可以修复您搜索的任何错误的软件。
  • @DavidHeffernan,在你之后,先生 鞠躬

标签: delphi windows-7-x64 delphi-5


【解决方案1】:

该错误代码是访问冲突的 NTSTATUS 代码。让您看到该错误代码通常意味着您的应用程序在初始化期间引发了访问冲突。一旦 Delphi RTL 初始化,这些错误就会转换为原生 Delphi EAccessViolation 错误。因此,这很可能是初始化期间的错误,可能与您链接或使用依赖模块的方式有关。

为了解决问题,您需要进行一些调试。我要做的第一件事是在配置文件模式下使用 Dependency Walker 来运行您的应用程序。这将在某个时候为您提供进程负载的诊断,大概在加载模块初始化期间,您会看到一个错误。希望这会引导您找到解决方案。

使用 Delphi 5 构建的程序可以在 64 位 Windows 上运行。您的程序中有一个需要调试的错误。就那么简单。不是最容易调试的错误,但它仍然只是您的代码的调试练习。

【讨论】:

  • 如果我的程序有错误,那么为什么它可以在 Windows XP 和 Windows 和 32 位操作系统上成功运行。请清除这一点,因为我对 Delphi 没有足够的了解。 NTSTATUS 代码是什么?
  • 您的程序中存在仅在某些系统上出现的错误。 NTSTATUS 错误代码是由 NT 层引发的错误代码。这与 Win32 层提出的那些相反。一旦 Delphi RTL 初始化,这样的错误就会被转换为原生的 Delphi 异常。很可能在初始化您的依赖项之一时出现问题。我的建议,请仔细听:停止寻找快速修复。该解决方案涉及调试您的特定程序。只有你能做到。
  • 好的,我会按照您的建议彻底调试代码。我希望这将带我找到原始问题的确切原因并提高我的调试技能。但是您能否解释一下如何使任何 exe 与 Windows 7 64 位操作系统兼容。我为 .NET 应用程序做过这个,但从来没有为 Delphi 做过。
  • Delphi 5 可执行文件已经与 x64 Windows 兼容。 64 位 Windows 运行 32 位应用程序。你有一个错误,你需要找到它。从 Dependency Walker 开始。另一种选择是删除应用程序的某些部分,直到删除某些内容然后运行。您可以在 x64 机器上安装 D5,但我怀疑在调试器能够帮助您之前出现问题。
  • 其实我没用过Dependency Walker,我也不知道怎么用。我正在阅读有关它的完整文章,经过初步阅读后,我可以说这对我很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2014-06-18
相关资源
最近更新 更多