7

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;

谢谢您的帮助!

4

3 回答 3

4

检查有问题的线路。如果说两种应该兼容的类型不兼容,那么有一些比简单赋值更复杂的事情。如果我不得不猜测,有些东西正在传递一个函数指针,并且 API 发生了变化。尝试检查这种情况...

于 2011-12-22T01:14:08.607 回答
1

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

此外,您是尝试使用-B选项(如(...))进行完整构建,还是使用-M选项(如( ...))进行简单编译c:\program files\embarcadero\rad studio\9.0\bin\dcc32.exe -$O- -$W+ --no-config-B-Qc:\program files\embarcadero\rad studio\9.0\bin\dcc32.exe -$O- -$W+ --no-config-M-Q

我还会尝试清除所有 dcus 以查看是否有帮助。

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

于 2011-12-22T01:08:35.727 回答
1

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

Embarcadero Delphi for Win32 编译器版本 23.0

于 2011-12-22T13:15:05.300 回答