繁体   English   中英

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

[英]IDE compiles successfully, but dcc32 writes: Error: E2010 Incompatible types: 'Integer' and 'NativeInt'

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;

谢谢您的帮助!

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

您是否仔细检查过您是否未使用命令行编译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中运行,因此请尝试捕获“消息”区域中显示的命令行,并在控制台中尝试完全相同的行。

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

Embarcadero Delphi for Win32编译器版本23.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM