Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows中的Delphi 2007和Indy10编译错误_Delphi_Indy_Delphi 2007_Indy10 - Fatal编程技术网

Windows中的Delphi 2007和Indy10编译错误

Windows中的Delphi 2007和Indy10编译错误,delphi,indy,delphi-2007,indy10,Delphi,Indy,Delphi 2007,Indy10,我刚刚将Indy10安装更新为最新版本(5276),现在在尝试编译Windows应用程序时出现错误 IdStackWindows.pas(2364)错误:E2029“..”应为“”,但“;”发现 问题似乎是TIdStackWindows.SetKeepAliveValues中第2364行的ka:tcp_keepalive声明 我正在Windows 7 Professional x64上使用Delphi 2007。进一步调查后,我发现IdWinsock2.pas中声明了一个新的TCP\u KEEP

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

IdStackWindows.pas(2364)错误:E2029“..”应为“”,但“;”发现

问题似乎是
TIdStackWindows.SetKeepAliveValues
中第2364行的
ka:tcp_keepalive
声明


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

进一步调查后,我发现IdWinsock2.pas中声明了一个新的
TCP\u KEEPALIVE
常量:

  {$EXTERNALSYM TCP_KEEPALIVE}
  TCP_KEEPALIVE         = 3;
这与现有的
tcp\u keepalive
记录冲突,因此该记录已重命名为
\u tcp\u keepalive
。将
TIdStackWindows.SetKeepAliveValues()
中声明的
ka
变量更新到此新类型名可解决此错误

然后,我在IdSSLOpenSSL.pas中发现了另一个编译问题:

[DCC错误]IdSSLOpenSSL.pas(980):E2065未满足转发或 外部声明:“IndySSL\u CTX\u使用\u证书\u链\u文件”

可以通过在从第1155行开始的
{$IFDEF STRING\u IS\u UNICODE}
块的
{$ELSE}
部分中添加缺少的
IndySSL\u CTX\u use\u certificate\u chain\u file()
实现来解决此错误,该块只需调用OpenSSL的标准
SSL\u CTX\u use\u certificate\u chain\u file()
函数即可

更新:

所有必要的修复(如上所述)都可以在5277版和更高版本中获得。

现在,让我也告诉Remy这个修复。我相信Remy Lebeau会看到这个问题,查看更改并很快提交修复。我已经检查了我的修复。不过,SteB提出的OpenSSL错误修复方案并不是正确的解决方案。我已经实现了正确的答案。@RemyLebeau-我知道你做了什么,你能编辑我的答案来包含你的更改以及为什么需要更改吗?与其编辑答案来描述更改,不如编辑答案来简单地说,“有一些相互矛盾的定义;确保您至少更新到签入xyz以接收修复。“我们不需要鼓励每个人在更改已在全球可用时更改代码的本地副本。