Delphi IDE编译成功,但dcc32写入:错误:E2010不兼容类型:';整数';和';国家';

Delphi IDE编译成功,但dcc32写入:错误:E2010不兼容类型:';整数';和';国家';,delphi,compiler-errors,delphi-xe2,dcc32,Delphi,Compiler Errors,Delphi Xe2,Dcc32,Delphi XE2 Update 3IDE成功编译项目,但dcc32.exe写入: Embarcadero Delphi for Win32 compiler version 22.0 Copyright (c) 1983,2010 Embarcadero Technologies, Inc. ehshelprouter.pas(137) Error: E2010 Incompatible types: 'Integer' and 'NativeInt' ehs_reg.pas(68) Fat

Delphi XE2 Update 3IDE成功编译项目,但dcc32.exe写入:

Embarcadero Delphi for Win32 compiler version 22.0
Copyright (c) 1983,2010 Embarcadero Technologies, Inc.
ehshelprouter.pas(137) Error: E2010 Incompatible types: 'Integer' and 'NativeInt'
ehs_reg.pas(68) Fatal: F2063 Could not compile used unit 'ehshelprouter.pas'
为什么??第137行是:

Application.OnHelp := OnRouteHelp; // function OnRouteHelp(Command: Word; Data: NativeInt; var CallHelp: Boolean): Boolean;

谢谢你的帮助

您是否仔细检查过您没有使用命令行编译Win64?(即,验证调用的实际上是dcc32.exe)。
在这种情况下,NativeInt是64位,这将是引发此错误的正常情况

另外,您是否正在尝试使用-B选项(
c:\program files\embarcadero\rad studio\9.0\bin\dcc32.exe-$O---$W+--no-config
-B
-Q
..)或使用-M选项进行简单编译
c:\ProgramFiles\embarcadero\rad studio\9.0\bin\dcc32.exe-$O---$W+--无配置
.)

我还将尝试清除所有DCU,看看是否有帮助


由于它在IDE中工作,请尝试捕获消息区域中显示的命令行,然后在控制台中尝试完全相同的命令行。

检查有问题的行。如果它说应该兼容的两种类型不兼容,那么会有比简单赋值更复杂的事情发生。如果我不得不猜测,有些情况下ing正在传递函数指针,API已更改。请尝试检查是否存在这种情况…

您错误地使用了较旧的dcc32.exe(可能是Delphi XE?)。请检查路径设置或在编译中提供XE2 dcc32.exe的完整路径。 XE2应显示此版本信息:

适用于Win32编译器版本23.0的Embarcadero Delphi


如何禁用dcc32.exe中的64位?更新了我的答案。dcc32.exe应该只溢出32位代码,但它真的是预期的/好的dcc32.exe吗?ehshelprouter.pas第137行周围的代码实际上是什么样子的?显示代码!!我打赌涉及TControl.Tag。