Unsolved Linking openssl with QT msvc 2017
-
I am trying to link openssl with QT so I can use QSslSocket, and its honestly driving me crazy because I keep getting the error that its not linked by checking QSslSocket::supportsSsl();
After I added the lib in my .pro file I ran it against Dependency Walker and it doesn't even look like its being required to link.
I checked QSslSocket::sslLibraryBuildVersionString() and it wants openssl 1.0.2j but I couldn't find that so I downloaded openssl 1.0.2l msvc 2017..pro:
QT += core gui network LIBS += -L"C:\\Users\\Trevin Corkery\\Desktop\\openssl-1.0.2l-vs2017\\lib64\\" -llibeay32MD LIBS += -L"C:\\Users\\Trevin Corkery\\Desktop\\openssl-1.0.2l-vs2017\\lib64\\" -lssleay32MD greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = Login_Portal TEMPLATE = app # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui
Files included with .exe:
ssleay32MD.dll
libeay32MD.dll
QT5Widgets.dll
QT5Gui.dll
etc..But I still get the error of:
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
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error -
Hi and welcome to devnet,
There's not use linking your application to these libraries. The default build of Qt dlopens them at runtime. You just have to make them available like you did beside your application. However, AFAIK, the
MD
suffix is likely wreaking havoc. IIRC, it should only bessleay32.dll
and the same for the other .dll.