刚刚从Indversion中获取了最新的来源,对于Indy 10,我收到了这个错误:
[DCC错误] IdWinsock2.pas(2421):E2003未声明的标识符:'SIZE_T'
IdWinsock2.pas第2421行的代码是:
{$EXTERNALSYM WSACMSGHDR}
WSACMSGHDR = record
cmsg_len: SIZE_T; // error.
cmsg_level: Integer;
cmsg_type: Integer;
{ followed by UCHAR cmsg_data[] }
end;
这似乎是一个非常基本的失败。我有点期待Indy资源在最新的Delphi中构建,开箱即用。我的结局肯定是错的,但我不知道是什么。
看起来稳定的标记源indy10 \ Indy10 \ tags \ Indy 10.5.7工作正常。这只是特朗克的油炸。
更新:为了尝试修复它,我添加了这个:
type
SIZE_T = Cardinal;
然后它会在同一个IdWinsock2.pas中死于6238:
function WSA_CMSGHDR_ALIGN(const Alength: SIZE_T): SIZE_T;
它的外部符号在第3218行定义不同:
function WSA_CMSGHDR_ALIGN(const Alength: PtrUInt): PtrUInt;
我最好的猜测是,有人试图在64位FPC上进行这项工作并且没有注意到他们在运送Delphi时打破了编译它的能力。
答案 0 :(得分:2)
沃伦,请参阅How to fix 'undeclared identifier' error in Indy?
这解决了这个问题,并且有一些关于用于编译的Delphi版本的注释。
答案 1 :(得分:2)
SIZE_T
支持目前正在进行中。新代码在准备好之前已经签入,但很快就会修复。
答案 2 :(得分:0)