QT https SSL支持静态QT静态程序构建 - 获取“协议”https“未知”


嗨,我

正在尝试静态编译我为 Windows 制作的 QT 程序,并在运行在更新函数使用的地址中使用 https 的更新数据库函数时不断收到错误协议"https"未知。它在通过QT Creator运行时有效,因为我安装了openssl,但是显然静态可执行文件没有适当的库来执行https。 我确实找到了这个和这个。 我在网上到处寻找解决方案,但无法找到解决方案。这是我到目前为止所做的:

  1. 在此处编辑了PowerShell脚本,以包含参数-openSSL-linked for configure.bat而不是-no-openssl

    $env:SystemRootSystem32cmd.exe /c "configure.bat -static -debug-and-release -platform win32-g++ -prefix $QtDir
    -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -openssl-linked
    -opensource -confirm-license
    -make libs -nomake tools -nomake examples -nomake tests"
    
  2. 已验证 config.summary 是否包含以下内容:

    SSL支持...联系

    OpenSSL支持。联系

  3. 将 openssl 库 libeay32.dll 和 libssl32.dll 和 ssleay32.dll 放在我的构建发布目录中,并在目录中编译可执行文件

  4. 将以下 QT 项目文件放入:

    INCLUDEPATH += "C:\OpenSSL-Win32\include">

    LIBS += -LC:\OpenSSL-Win32\lib -llibeay32 -lssleay32

然而,我没有做的一件事是,在使用 powershell 脚本的原始 QT 静态构建和使用 -openssl 链接选项的后续构建之间进行清理。 不知道这是否必要。 有什么想法吗?谢谢!

尽管configure指出了什么,但您还没有提供足够的信息来配置它以使其将Qt与OpenSSL链接起来。

您需要在构建Qt时将其与OpenSSL链接。将以下参数传递给configure(这是针对 Qt 5(:

-openssl-linked
-I C:OpenSSL-Win32include
-L C:OpenSSL-Win32libVCstatic
OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32 -lCrypt32"
OPENSSL_LIBS_DEBUG=-"lssleay32MTd -llibeay32MTd"
OPENSSL_LIBS_RELEASE="-lssleay32MT -llibeay32MT"

生成项目时无需传递任何特殊参数。

以上假设来自Shining Light Productions,这是Windows事实上的OpenSSL二进制供应商。

我联系了闪亮的光制作公司,他们说 mingw 没有静态库。 此外,我还通过编辑QT的powershell脚本成功进行静态构建的配置-openssl-linked -I C:/OpenSSL-Win32/include -L C:/OpenSSL-Win32/lib(您只需要带有.exe的openssl dll即可使其工作......

最新更新