我需要创建一个具有OpenSSL支持的独立二进制应用程序。为了开发,我使用的是Qt Framework。
我遇到的问题是在测试机上测试应用程序时,我没有SSL支持。
我做了什么(应该问我没有尝试过什么):
我用从here下载的OpenSSL 1.1.1d编译了Qt(使用不同的配置选项重新编译了大约15次,每次编译大约需要6个小时-浪费了很多时间。)
要编译静态Qt,我一直在使用this脚本(从Qt的this脚本略作改编,以包括所使用的线程数并指定OpenSSL HOME)。
M ain配置选项是
cmd /C "configure.bat -static -debug-and-release -platform win32-g++ -prefix $QtDir `
-qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -sql-sqlite -ssl -openssl -I $($OPENSSL_HOME)\include -L$($OPENSSL_HOME)\lib\MinGW`
-opensource -confirm-license `
-make libs -nomake tools -nomake examples -nomake tests -v"
cmd /C "mingw32-make -k -j$($threads)"
OpenSSL_HOME目录布局
Directory: C:\OpenSSL\OpenSSL-Win32
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/09/30 07:27 bin
d----- 2019/09/30 07:27 exp
d----- 2019/09/30 07:27 include
d----- 2019/09/30 07:27 lib
d----- 2019/09/30 07:27 tests
-a---- 2019/09/11 18:10 89 acknowledgements.txt
-a---- 2019/09/11 18:10 752 authors.txt
-a---- 2019/09/11 18:10 596279 changes.txt
-a---- 2019/09/11 18:10 6408 c_rehash.pl
-a---- 2019/09/11 18:10 86 faq.txt
-a---- 2019/09/11 18:10 2515456 libcrypto-1_1.dll
-a---- 2019/09/11 18:10 530432 libssl-1_1.dll
-a---- 2019/09/11 18:10 6246 license.txt
-a---- 2019/09/11 18:10 43136 news.txt
-a---- 2019/09/11 18:10 3251 readme.txt
-a---- 2019/09/30 07:27 96904 unins000.dat
-a---- 2019/09/30 07:26 730789 unins000.exe
Directory: C:\OpenSSL\OpenSSL-Win32\lib
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/09/30 07:27 MinGW
d----- 2019/09/30 07:27 VC
-a---- 2019/09/11 18:10 1840 capi.lib
-a---- 2019/09/11 18:10 1866 dasync.lib
-a---- 2019/09/11 18:10 985224 libapps.lib
-a---- 2019/09/11 18:10 109020 libcrypto.def
-a---- 2019/09/11 18:10 1013446 libcrypto.lib
-a---- 2019/09/11 18:10 34718436 libcrypto_static.lib
-a---- 2019/09/11 18:10 14033 libssl.def
-a---- 2019/09/11 18:10 122290 libssl.lib
-a---- 2019/09/11 18:10 7058838 libssl_static.lib
-a---- 2019/09/11 18:10 448842 libtestutil.lib
-a---- 2019/09/11 18:10 1734 openssl.lib
-a---- 2019/09/11 18:10 1892 ossltest.lib
-a---- 2019/09/11 18:10 1880 padlock.lib
-a---- 2019/09/11 18:10 1722 uitest.lib
Directory: C:\OpenSSL\OpenSSL-Win32\lib\MinGW
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/09/11 18:11 3347286 libcrypto.a
-a---- 2019/09/11 18:10 109020 libcrypto.def
-a---- 2019/09/11 18:11 385126 libssl.a
-a---- 2019/09/11 18:10 14033 libssl.def
在全新的Windows 7/10安装上运行独立的.exe
时,调用QSslSocket::supportSsl()
具有以下效果。
此文件已在OpenSSL版本 1.0.2g / p 中使用OpenSSL 在路径中(cmd路径)进行了测试。 SSL支持返回false 。
我的开发PC已安装 1.1.1d ,但在路径(cmd路径)中打开了未,但对于SSL支持返回true。 计算机支持SSL 。
使用静态Qt工具包(也内置了静态Qt)构建机器的 OpenSSL 1.0.2g仅在路径中。 计算机支持SSL 。 除了在装有OpenSSL 1.1.1d的开发PC上。这台机器与上面测试过的机器之间的区别在于,Qt Creator是通过提供的链接安装的OpenSSL安装的。
在我的项目中,每次构建希望时,我都添加到.pro
文件中,这会(没有帮助)
INCLUDEPATH += "C:\OpenSSL\OpenSSL-Win32\include"
LIBS += -L"C:\OpenSSL\OpenSSL-Win32\lib\MinGW\libssl.a"
LIBS += -L"C:\OpenSSL\OpenSSL-Win32\lib\MinGW\libcrypto.a"
我尝试了使用OpenSSL -Includes和-Libs&编译每个版本的静态Qt的各种方法,尝试链接到静态VC OpenSSL库,MinGW库和*.dlls
,但似乎无济于事。 / p>
我精疲力尽,没什么可尝试的。在解决这个问题上,我确实需要帮助。