Windows中的Delphi 2007和Indy10编译错误
我刚刚将Indy10安装更新为最新版本(5276),现在在尝试编译Windows应用程序时出现错误 IdStackWindows.pas(2364)错误:E2029“..”应为“”,但“;”发现 问题似乎是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
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以接收修复。“我们不需要鼓励每个人在更改已在全球可用时更改代码的本地副本。