Qt Qml 中Image的QSslSocket问题解决

本文介绍使用QML加载网络图片时遇到的SSL连接问题及其解决方法,包括安装OpenSSL库并配置相关DLL文件的具体步骤。

1. 用Qt 5.6 SDK,qml文件如下:


import QtQuick 2.5
 
Rectangle {
    id: mainWindow
    width: 800
    height: 600
    color: "white"
 
    // This element displays an image. Because the source is online, it may take some time to fetch
    Image {
        x: 40
        y: 20
        width: 61
        height: 73
 
        source: "http://codereview.qt-project.org/static/logo_qt.png"
    }
}

2. 用qmlscene命令运行,报错如下:

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
 QML Image: ????SSL???????????


3. 解决方案:

1>参考:http://blog.youkuaiyun.com/sgnh123456/article/details/8020683

2>安装Win32OpenSSL_Light-1_0_2h.exe

3>拷贝 libeay32.dll and ssleay32.dll 到    XXX\5.6\mingw49_32\bin 或者 XXX\Qt5.6.0\5.6\msvc2013\bin目录




QML使用WebView遇到的QSslSocket问题解决

在QML中使用WebView,运行过程中单击没有效果,并提示以下错误,

QSslSocket: cannot call unresolved function SSLv23_client_method

QSslSocket: cannot call unresolved function SSL_CTX_new

QSslSocket: cannot call unresolved function SSL_library_init

QSslSocket: cannot call unresolved function ERR_get_error

经查阅,在http://codeblog.vurdalakov.net/2009/11/solution-qsslsocket-cannot-call.html

这里面看到了解决办法,经过测试解决问题了!

步骤如下:

You need to install OpenSSL Win32 or Win64 binaries.

你需要安装OpenSSL库;

1、Open Win32 OpenSSL Installation Project page.

首先打开OpenSSL Installation Project网页;


2、Download the latest "light" Win32 or Win64 installation package, for example "Win32 OpenSSL v0.9.8l Light".

下载安装包,我下载的是:Win32 OpenSSL v1.0.1c Light安装包,随着时间的推进,这个版本会不断更新的!!


3、Install it to any location. Ignore "Microsoft Visual C++ 2008 Redistributables" warning (click OK) and select copying OpenSSL DLLs to "The OpenSSL binaries (\bin) directory".

安装(exe文件)到本地,我是安装到C盘下,并且在安装过程中选择将库安装到OpenSSL的安装目录(/bin)下面。


4、Copy libeay32.dll and ssleay32.dll from the \bin folder to the same place where your QtNetwork4.dll or QtNetworkd4.dll is located.

将libeay32.dll 和 ssleay32.dll 文件拷贝到QtSDK中的存放有QtNetwork4.dll和QtNetworkd4.dll的文件目录下。我的是

C:\QtSDK\Desktop\Qt\4.8.0\mingw\bin,这个主要是看自己选择的编译器也有可能是C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin等等!

 

经过上述4步骤就解决问题了!不错,谢谢原作者的分享!


转载:http://blog.youkuaiyun.com/sgnh123456/article/details/8020683




在代码方面的话,类似于下面,设置QSslConfiguration

    QNetworkRequest mRequest;
    QSslConfiguration config;
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    config.setProtocol(QSsl::SslV2);
    mRequest.setSslConfiguration(config);


参考:http://blog.youkuaiyun.com/qyvlik/article/details/44310861


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值