【发布时间】:2012-01-11 02:15:16
【问题描述】:
我希望有人能给我解释一下吗?当使用 Application Verifier 并仅在 Application Verifier 中使用默认设置时,我编译的所有 64 位应用程序都将失败。这是 hello world dpr 的示例:
program HelloWorld;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
begin
try
Writeln('Hello, World!');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
正如我所见,它在应用程序启动时应用程序验证程序抛出的 Int 3(第一次机会)失败?为什么这在 x64 而不是 x86 中失败?有没有办法阻止这种情况? 我一定错过了 x64 文档中的某些内容,因为我真的迷失在这种行为中。
感谢所有可以为我回答这个问题的人。
爷爷
【问题讨论】:
-
您是否尝试过在提升模式下运行应用程序和应用程序验证程序(具有管理员权限)?
-
如果删除 try..except 会发生什么?
-
@RRUZ 抱歉,我花了这么长时间才回复,这里的天气变南了。以更高的权限运行无关紧要。
-
@Remko 忽略异常陷阱也无济于事。
-
我可以简单地启动一个新应用程序,一个 hello world 表单应用程序,除了主表单之外什么都没有,它也会失败。任何为 x64 编译的应用程序都会发生这种情况,x86 很好。我在 MS 网站上读到他们认为 x86 错误地处理了异常,并试图在 x64 中解决这个问题。我个人不介意这一点,因为我当然可以抓住第二次机会例外。但是我的客户坚持要纠正这个问题,我提供的软件将在 Application Verifier 下运行。所以我认为 x64 缺少一些微不足道的东西。
标签: windows delphi delphi-xe2