IDE编译成功,但dcc32写道:错误:E2010不兼容类型:'Integer'和'NativeInt'

时间:2011-12-22 00:47:22

标签: delphi compiler-errors delphi-xe2 dcc32

Delphi XE2 Update 3 IDE成功编译项目,但 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;

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

检查相关行。如果它说两个应该兼容的类型是不兼容的,那么就会发生比简单分配更复杂的事情。如果我不得不猜测,有些东西正在传递函数指针并且API已经改变了。试着检查那个案子......

答案 1 :(得分:1)

您是否仔细检查过您是否未使用命令行编译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:\program files\embarcadero\rad studio\9.0\bin\dcc32.exe -$O- -$W+ --no-config -M -Q)?

我还会尝试消灭所有dcus以确定它是否有帮助。

由于它可以在IDE中运行,因此请尝试捕获“消息”区域中显示的命令行,并在控制台中尝试完全相同的行。

答案 2 :(得分:1)

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

  

Embarcadero Delphi for Win32编译器版本23.0