Mus*_*lik 4 c++ ssl qt openssl
我有一个示例项目,它使用QSslSocket并QSslCertificate从SSL证书中获取信息(Qt 5.7,Windows 10).QSslSocket::supportsSsl()函数返回false,我在运行时得到这些错误:
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
Run Code Online (Sandbox Code Playgroud)
所以我编译了OpenSSL_1.1.0并将其链接到我的项目:
INCLUDEPATH += . "C:/OpenSSL-Win32/include/" LIBS +=
-L"C:/OpenSSL-Win32/lib/" -llibcrypto -llibssl
Run Code Online (Sandbox Code Playgroud)
但仍然是同样的错误.我下载了OpenSSL安装程序,但仍然如此.
奇怪的是QSslSocket::sslLibraryBuildVersionString()返回OpenSSL 1.0.2g 1 Mar 2016,即使我编译并安装了OpenSSL_1.1.0.
我知道我错过了一个简单的细节.请告诉我它是什么.谢谢.
从文档:
QSslSocket::sslLibraryBuildVersionString()返回编译时使用的SSL库的版本字符串.(强调我的)
你得到它的结果并不意味着Qt可以访问OpenSSL,只是它是针对特定版本编译的.这可以让您知道在动态链接时应该在运行时提供的二进制兼容版本(默认情况下).
您想检查QSslSocket::sslLibraryVersionNumber()- [...] 在运行时使用的库的版本(强调我的).
Qt可能会尝试PATH在其中给出的路径中找到OpenSSL dll的副本,如果没有的话QCoreApplication::libraryPaths.在尝试使用OpenSSL之前,您应该将OpenSSL dll的位置添加到任一位置.
| 归档时间: |
|
| 查看次数: |
6475 次 |
| 最近记录: |