Просто взял последние исходники из Subversion для Indy 10, и я получаю эту ошибку:
[Ошибка DCC] IdWinsock2.pas (2421): E2003 Необъявленный идентификатор: 'SIZE_T'
Код в строке 2421 IdWinsock2.pas:
{$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;
И это external-sym определено в строке 3218 по-другому:
function WSA_CMSGHDR_ALIGN(const Alength: PtrUInt): PtrUInt;
Я предполагаю, что кто-то находится в процессе взлома, пытаясь сделать эту работу в 64-битном FPC, и не заметил, что они нарушили способность компилировать его в доставке Delphi.