2015-06-03 6 views
4

Я только что обновил мою установку Indy10 до последней версии (5276), и теперь я получаю сообщение об ошибке при попытке скомпилировать приложение Windows.Ошибка компиляции Delphi 2007 и Indy10 в IdStackWindows

IdStackWindows.pas(2364) Error: E2029 '..' expected but ';' found

Вопрос, кажется, декларация ka: tcp_keepalive на линии 2364 в TIdStackWindows.SetKeepAliveValues.

Я использую Delphi 2007 для Windows 7 Professional x64.

ответ

5

После дальнейших исследований я обнаружил, что есть новая постоянная TCP_KEEPALIVE объявляется в IdWinsock2.pas:

{$EXTERNALSYM TCP_KEEPALIVE} 
    TCP_KEEPALIVE   = 3; 

Это противоречит существующим tcp_keepalive записи, так что была переименована в _tcp_keepalive. Обновление переменной ka, объявленной в TIdStackWindows.SetKeepAliveValues(), новому этановому названию разрешает ошибку.

Затем я нашел еще один вопрос компиляции в IdSSLOpenSSL.pas:

[DCC Error] IdSSLOpenSSL.pas(980): E2065 Unsatisfied forward or external declaration: 'IndySSL_CTX_use_certificate_chain_file'

Эта ошибка может быть решена путем добавления отсутствующей реализации IndySSL_CTX_use_certificate_chain_file() внутри {$ELSE} сечения {$IFDEF STRING_IS_UNICODE} блока, который начинается в строке 1155, и есть он просто вызывает функцию OpenSSL SSL_CTX_use_certificate_chain_file().

ОБНОВЛЕНИЕ:
Все необходимые исправления (описанные выше) доступны в редакции 5277 и более поздних версий.

+0

Теперь, пусть также Remy об этом исправлении. – RBA

+0

Я уверен, что Remy Lebeau увидит этот вопрос, рассмотрит изменения и зафиксирует исправление в ближайшее время. – MikeT

+1

Я делаю это прямо сейчас ... –