Delphi 2007和Indy10在IdStackWindows中编译错误

时间:2015-06-03 08:56:50

标签: delphi indy delphi-2007 indy10

我刚刚将我的Indy10安装更新到最新版本(5276),现在我在尝试编译Windows应用程序时遇到错误。

  

IdStackWindows.pas(2364)错误:E2029'..'预计但是';'结果

问题似乎是在ka: tcp_keepalive第2364行宣布TIdStackWindows.SetKeepAliveValues

我在Windows 7 Professional x64上使用Delphi 2007。

1 个答案:

答案 0 :(得分:5)

经过进一步调查后,我发现在IdWinsock2.pas中声明了一个新的TCP_KEEPALIVE常量:

  {$EXTERNALSYM TCP_KEEPALIVE}
  TCP_KEEPALIVE         = 3;

这与现有的tcp_keepalive记录冲突,因此已重命名为_tcp_keepalive。将ka中声明的TIdStackWindows.SetKeepAliveValues()变量更新为此新类型名称可解决错误。

然后我在IdSSLOpenSSL.pas中找到了另一个编译问题:

  

[DCC错误] IdSSLOpenSSL.pas(980):E2065不满意前锋或   外部声明:'IndySSL_CTX_use_certificate_chain_file'

可以通过在{11}行的IndySSL_CTX_use_certificate_chain_file()块的{$ELSE}部分中添加缺少的{$IFDEF STRING_IS_UNICODE}实现来解决此错误,并让它简单地调用OpenSSL的标准{{ 1}}功能。

<强>更新
修订版5277及更高版本中提供了所有必要的修复程序(如上所述)。