QSslSocket: cannot call unresolved function
Copy these two file to path: 'C:\Qt\Tools(msvc/mingw){version}\bin'
C:\Qt\Tools\(msvc|mingw)\opt\bin\libeay32.dll
C:\Qt\Tools\(msvc|mingw)\opt\bin\ssleay32.dll
I ended up here via Googling around. In my case, I was getting this error on random machines because they were missing the correct versions of libeay32.dll
and ssleay32.dll
. It's "random" because some computers have these loaded in PATH
from other software and some do not.
I fixed this for Qt Creator by adding the DLLs to the bin
folder of my Qt install, and I fixed this on distributions by including the aforementioned DLLs in my distribution.
The DLLs should be the same or similar to the version of OpenSSL that Qt was compiled with in the first place. If you didn't compile it yourself, starting in Qt 5.4 you can query this with QSslSocket::sslLibraryBuildVersionString()
. (Credit: https://stackoverflow.com/a/42297296/1666676)
Don't forget that your 64-bit apps should have a 64-bit version of the DLLs, and 32-bit apps should have 32-bit DLLs so you don't have the same problem as this guy.
Additional notes:
- Starting in Qt 5.2 you must use version 1.0.0 or newer. 0.9.8 doesn't work any more. (Source: http://doc.qt.io/qt-5/ssl.html)
- For my standard MSVC2017x64 distribution of Qt 5.10.1
sslLibraryBuildVersionString()
returned "OpenSSL 1.0.2o". I use 1.0.2p for my distributions. - The OpenSSL DLLs changed names to
libcrypto-1_1*.dll
andlibssl-1_1*.dll
starting in OpenSSL 1.1.0. Standard Qt distributions don't yet use those as of Sept. 2018. - OpenSSL GitHub downloads are here: https://github.com/openssl/openssl/tags
Hope this helps the next person. Sorry for resurrecting an old post.