Неразрешенные функции при работе с QSslSocket

Я попытался запустить простую программу, написанную с помощью Qt и QSslSocket. Я запускаю эту программу на машине Ubuntu 12.04 с установленным OpenSSL. Но я получил следующие ошибки:

QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error

Как я могу исправить эти ошибки?

Ответ 2

В Windows/MinGW вам необходимо скопировать эти файлы в каталог exe.

C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll

Или вы можете скопировать их в C:\Qt\Tools\mingw492_32\bin, если хотите, чтобы он работал со всеми вашими приложениями. Очевидно, вам нужно распространять их с вашей программой.

На самом деле вам не нужно добавлять QT += network.

Ответ 3

У меня была такая же проблема с QT 5.0.1 и QT 5.1.1, и, наконец, я понял, что мне нужно скопировать DLL файлы OpenSSL рядом с двоичным файлом приложения. По какой-то причине QT не загружает файлы DLL из Пути Windows...

Я использовал OpenSSL Win32 0_9_8y

Ответ 4

Для Ubuntu или (на базе Linux на базе Debian) установите openssl и libssl-dev

то есть. sudo apt-get install openssl libssl-dev.

Для Red Hat Fedora, CentOS (на основе rpm linux) установите openssl и openssl-devel

то есть. yum install openssl openssl-devel

Ответ 5

Вам необходимо включить этот файл:

 #include <QtNetwork>

И в вашем файле .pro добавьте эту строку:

 QT += network

Ответ 6

Установка пакета lua-openssl на debian, похоже, решила проблему для меня.