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

时间:2016-02-16 20:44:20

标签: c++ qt ssl static-linking

您好我正在尝试编译我为Windows静态编写的QT程序并继续获取错误协议“https”在运行更新数据库函数时未知,该函数在更新函数使用的地址中使用https。它在QT Creator中运行,因为我安装了openssl,但显然静态可执行文件没有适当的库来执行https。我找到了thisthis。我试图寻找一个解决方案而不是网络。这是我到目前为止所做的:

  1. 编辑了powershell脚本here,为configure.bat包含参数-openssl-linked而不是-no-openssl

    $env:SystemRoot\System32\cmd.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 libraries libeay32.dll和libssl32.dll以及ssleay32.dll放入我的构建版本目录中,并在目录中编译可执行文件

  4. 将以下qt项目文件:

    INCLUDEPATH + =“C:\ OpenSSL-Win32 \ include”

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

  5. 然而,我没有做的一件事是使用powershell脚本进行原始QT静态构建和使用-openssl-linked选项进行后续构建之间的干净。不知道是否有必要。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

尽管configure指示了什么,但您没有提供足够的信息来配置让它将Qt与OpenSSL链接。

您需要在构建时将Qt与OpenSSL链接。将以下参数传递给configure(这适用于Qt 5):

-openssl-linked
-I C:\OpenSSL-Win32\include
-L C:\OpenSSL-Win32\lib\VC\static
OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32 -lCrypt32"
OPENSSL_LIBS_DEBUG=-"lssleay32MTd -llibeay32MTd"
OPENSSL_LIBS_RELEASE="-lssleay32MT -llibeay32MT"

构建项目时不需要传递任何特殊参数。

以上假设来自Shining Light Productions的构建,这是Windows的事实上的OpenSSL二进制提供程序。

答案 1 :(得分:-1)

我联系了Shining Light Productions,他们说mingw没有静态库。另外,我通过编辑QT的powershell脚本来成功进行静态构建(-openssl-linked -I C:/OpenSSL-Win32/include -L C:/OpenSSL-Win32/lib,只需要使用.exe的openssl dll就可以工作......)。