4

在这些情况下,在 Delphi XE2 update 4 中调试可执行文件时,我得到了进一步提到的错误:

  • 这取决于系统路径mqic.dll中的 WebShpere (C:\Program Files \IBM\WebSphere MQ\bin\mqic.dllC:\Program Files\IBM\WebSphere MQ\bin不是用户路径)。
  • 正在使用Run-> Parameters-> Debugger-> Environment Block->中的覆盖环境变量进行调试User overrides
  • Including System Variables在同一属性页上进行检查

这是错误(它是标记为“系统错误”的 Windows DLL 加载错误)。

程序无法启动,因为您的计算机缺少 mqic.dll。尝试重新安装程序以解决此问题。

几点注意事项:

  • 我以普通用户的身份进行调试(无论如何这是正常的做法,但在这种情况下,由于客户端的策略,我不能成为管理员)。
  • 一旦我删除了环境变量,它就可以工作(但是程序 barfs 因为它确实需要信息)。
  • 在 Delphi 启动之前指定环境变量很麻烦,但作为一种临时解决方法是可行的(我需要在调试时经常更改该变量以测试不同的场景;Delphi 的启动/关闭时间使这很乏味)。
  • 我不能没有环境变量,因为它是没有源代码的应用程序所必需的,并且无法及时重写以使其被逐步淘汰

这是事件日志显示的内容:

Faulting application name: CAS400NTMQ.exe, version: 1.1.4639.52512, time stamp: 0x50508180
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b60
Exception code: 0xc0000005
Fault offset: 0x0005333f
Faulting process id: 0x4b20
Faulting application start time: 0x01cd90e36bb90816
Faulting application path: C:\Users\...\bin\CAS400NTMQ.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: a9853965-fcd6-11e1-ae66-78e3b5ca2514

问题:有没有比我上面使用的其他解决方案或更简单的解决方法?

4

2 回答 2

6

根据Andreas Hausladen 的最新博文他的回答,IDEFixPack 解决了这个 XE2 错误。并且在 XE3 中不需要,因为 XE3 解决了这个问题。

所以我怀疑如果你能设法在这台机器上安装IDEFixPack ,这可能是最有效的解决方法。即使您无法安装 IDEFixPack,那么这个答案仍然对其他读者有用。

于 2012-09-12T19:22:46.423 回答
5

Delphi XE2 对用户覆盖的环境变量的处理有问题。获取示例应用程序:

program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

begin
  Writeln(GetEnvironmentVariable('PATH'));
  Readln;
end.

当调试器用完或没有用户覆盖环境变量时,这会很好地输出路径。但是只要在 Run->Parameters->Environment Block 中引入环境变量,它就会输出一个空字符串。

一种可能的解决方法似乎是覆盖所需的变量,在本例中为“PATH”。然后程序可以再次输出(并可能使用)正确的路径。显然,这是一个相当有限的解决方法。一旦你使用了用户覆盖,你失去的不仅仅是“PATH”。Fi 示例程序仍然无法输出“APPDATA”。

以前的 Delphi 版本似乎没有这个问题。有一个关于 QC 的报告:Include System Variables is not working again,它在构建 17.0.4625.53395 中作为“固定”关闭。

于 2012-09-12T17:48:14.123 回答