Проблема, связанная с SSL DLL - PullRequest
0 голосов
/ 07 июня 2018

Использование:

  • Обновление Delphi Berlin 2
  • Indy версия 10.6.2.5341
  • Websocket (sgcWebSocketClient, 4.1.7.0)

У нас есть приложение, которое работает на некоторых машинах, а на других нет.Среда такая же, Windows 10 недавно установлена ​​без какой-либо другой программы.Аппаратные средства одинаковы, потому что у нас много одинаковых аппаратных средств.

Что ж, когда мы пытаемся подключиться безопасным способом, используя SSL, мы получаем «не удалось загрузить библиотеку SSL».У нас не установлен OpenSSL ни на каких машинах (даже на тех, которые работают нормально). Мы пробовали поддержку ESEGECE ... но до сих пор не решили.

Мы пытались зарегистрировать библиотеки DLL с помощьюregsvr32, но мы получаем некоторые ошибки и не можем зарегистрироваться.Вот сообщения, которые мы получаем:

Модуль "libeay32.dll" загружен, но точка входа DllRegisterServer не найдена.Убедитесь, что "libeay32.dll" является допустимым файлом DLL или OCX, а затем повторите попытку.

Или мы получим:

Модуль "C: \ Central \"libeay32.dll "не удалось загрузить.Убедитесь, что двоичный файл хранится по указанному пути, или отладьте его, чтобы проверить наличие проблем с двоичными или зависимыми файлами .DLL.Указанный модуль не найденполучить сообщение «Не удалось загрузить libeay32.dll».

Мы также пытались использовать SafeLoadLibrary(), указывая на место, где находится DLL.

Мы также провели тест с IdOpenSSLSetLibPath(), ноне успешный.

GetLastError() возвращает 0.

Мы нашли похожие вопросы по этому поводу здесь, попробовали решения, как вы можете видеть выше, но безуспешно.

Есть ли у вас другиепредложение

1 Ответ

0 голосов
/ 07 июня 2018

Вы не можете использовать regsvr32 для регистрации DLL-библиотек OpenSSL, поскольку они не являются серверами ActiveX / COM.

Предполагается, что у вас есть и ssleay32.dll, и libeay32.dll вместе, наиболее вероятная причина для libeay32.dllне удается загрузить, потому что:

  • вы используете сторонний дистрибутив libeay32.dll или ssleay32.dll, который имеет внешние зависимости от других библиотек DLL, таких как среда выполнения Visual C ++,который у вас не установлен.Для проверки используйте такой инструмент, как Dependency Walker.

    Попробуйте использовать библиотеки OpenSSL, доступные на зеркале Indy's Fulgan, так как они не имеют внешних зависимостей (кроме друг друга):

    https://indy.fulgan.com/SSL/

  • ваше приложение 64-битное, но вы используете 32-битные версии libeay32.dll или ssleay32.dll, или наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...