在这些情况下调试Delphi XE2 update 4中的可执行文件时,我得到了错误时提到的错误:
mqic.dll
的{{1}} C:\Program Files \IBM\WebSphere MQ\bin\mqic.dll
和C:\Program Files\IBM\WebSphere MQ\bin
Run
位于系统路径上(不在用户路径上)。Parameters
- >中的覆盖环境变量调试Debugger
- > Environment Block
- > User overrides
- > Including System Variables
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
这是错误(这是一个标记为“系统错误”的Windows DLL加载错误)。
程序无法启动,因为您的计算机缺少mqic.dll。尝试重新安装该程序以解决此问题。
一些注意事项:
这是事件日志显示的内容:
{{1}}
问题:是否有其他解决方案或更简单的解决方法,而不是我上面使用的方法?
答案 0 :(得分:6)
根据Andreas Hausladen's latest blog post和his answer here,这个XE2错误由IDEFixPack处理。 XE3不需要,因为XE3解决了这个问题。
所以我怀疑如果你能设法在这台机器上安装IDEFixPack,这可能是最有效的解决方法。即使您无法安装IDEFixPack,这个答案对其他读者仍然有用。
答案 1 :(得分:5)
使用用户覆盖的环境变量处理Delphi XE2时出现了问题。以示例应用为例:
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
begin
Writeln(GetEnvironmentVariable('PATH'));
Readln;
end.
当用完调试器或没有用户覆盖环境变量时,这会输出路径。但是只要在Run-> Parameters-> Environment Block中引入环境变量,它就会输出一个空字符串。
可能的解决方法似乎是覆盖所需的变量,在本例中为“PATH”。然后程序可以再次输出(并可能使用)正确的路径。显然,这是一个相当有限的解决方法。一旦你使用了用户覆盖,你不仅会丢失'PATH'。 F.i.示例程序仍然无法输出'APPDATA'。
以前的Delphi版本似乎没有这个问题。有关QC的报告:Include System Variables isn't working anymore在构建17.0.4625.53395中关闭为“已修复”。