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;
感谢您的帮助!
答案 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