Indy 10的最新颠覆源不会在Delphi XE中构建

时间:2011-03-10 21:04:38

标签: delphi indy delphi-xe

刚刚从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时打破了编译它的能力。

3 个答案:

答案 0 :(得分:2)

沃伦,请参阅How to fix 'undeclared identifier' error in Indy?

这解决了这个问题,并且有一些关于用于编译的Delphi版本的注释。

答案 1 :(得分:2)

SIZE_T支持目前正在进行中。新代码在准备好之前已经签入,但很快就会修复。

答案 2 :(得分:0)

我会在Delphi中将size_t声明为Cardinal

type
  size_t = Cardinal;