qt.network.ssl: QSslSocket: cannot call unresolved function 问题解决
2017-07-27 11:29
1146 查看
转: Qt5.4.2实现一个简单的浏览器 及相关问题的解决
首先,介绍一下我使用的Qt版本:
Qt Creator 3.4.1 (opensource)
Based on Qt 5.4.2 (MSVC 2013, 32 bit)
Built on May 28 2015 19:07:19
运行平台为Windows。至于linux平台,以后再说吧。
主要使用的是Qt中的QtWebKit和QWebView。这里Qt5做了相应的调整,可视化的QWebView被整合到了QtWebKitWidgets包中。使用到QWebView等webkit相关可视部件的,Qt5 单独放到了QtWebKitWidgets模块中,所以在使用了QWebView类的地方:
所以在做相应的头文件包含时,应按照如下方式书写:
代码编译时,遇到了外部链接错误,显示无法解析的外部文件:
这是因为在链接时,没有找到相应的链接库所致。我们手动指明要找的链接库:
release版本和debug版本只能选则其一,当你编译debug版本时,选择debug edition,否则会报 QWidget: Must construct a QApplication before a QWidget 错误。这是因为把Debug/Release的Dll混到一起。选对相应的版本就能解决这个错误。
到这里,就编译OK了。
开始运行我们的程序,当我们输入网址,并单击后,在debug窗口中输出了如下信息,如图所示:
上网搜索了下,是openssl的缘故。
我们需要openssl的两个dll文件,即libeay32.dll 和 ssleay32.dll 文件。下载安装openssl。
安装完毕后,将libeay32.dll 和 ssleay32.dll 文件拷贝到QtSDK中的存放有Qt5Network.dll和Qt5Networkd.dll的文件目录下。我的是G:QtQt5.4.25.4msvc2013_openglbin
将这两个DLL文件拷贝至QtQt5.4.25.4msvc2013_openglbin 目录之后,再次编译运行,世界多美好!
Qt5相对于Qt4来说,具有相当的变化,且行且记之。
Done!!!
注明:本文章属于转载,仅供行业人员学习交流使用,文章版权属于原创作者,在此向原创者致敬,感谢原创作者为大家学习交流提供精品内容。
首先,介绍一下我使用的Qt版本:
Qt Creator 3.4.1 (opensource)
Based on Qt 5.4.2 (MSVC 2013, 32 bit)
Built on May 28 2015 19:07:19
运行平台为Windows。至于linux平台,以后再说吧。
主要使用的是Qt中的QtWebKit和QWebView。这里Qt5做了相应的调整,可视化的QWebView被整合到了QtWebKitWidgets包中。使用到QWebView等webkit相关可视部件的,Qt5 单独放到了QtWebKitWidgets模块中,所以在使用了QWebView类的地方:
所以在做相应的头文件包含时,应按照如下方式书写:
#include <QtWebKit/QtWebKit> #include <QtWebKitWidgets/QWebView>
代码编译时,遇到了外部链接错误,显示无法解析的外部文件:
mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QWebView::QWebView(class QWidget *)" (__imp_??0QWebView@@QAE@PAVQWidget@@@Z) referenced in function "public: void __thiscall Ui_MainWindow::setupUi(class QMainWindow *)" (?setupUi@Ui_MainWindow@@QAEXPAVQMainWindow@@@Z) mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QWebView::~QWebView(void)" (__imp_??1QWebView@@UAE@XZ) referenced in function "public: virtual void * __thiscall QWebView::`scalar deleting destructor'(unsigned int)" (??_GQWebView@@UAEPAXI@Z) mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWebView::load(class QUrl const &)" (__imp_?load@QWebView@@QAEXABVQUrl@@@Z) referenced in function "private: void __thiscall MainWindow::urlEnter(void)" (?urlEnter@MainWindow@@AAEXXZ) mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWebView::setUrl(class QUrl const &)" (__imp_?setUrl@QWebView@@QAEXABVQUrl@@@Z) referenced in function "public: void __thiscall Ui_MainWindow::setupUi(class QMainWindow *)" (?setupUi@Ui_MainWindow@@QAEXPAVQMainWindow@@@Z) mainwindow.obj:-1: error: LNK2001: unresolved external symbol "protected: virtual void __thiscall QWebView::changeEvent(class QEvent *)" (?changeEvent@QWebView@@MAEXPAVQEvent@@@Z) mainwindow.obj:-1: error: LNK2001: unresolved external symbol "protected: virtual void __thiscall QWebView::contextMenuEvent(class QContextMenuEvent *)" (?contextMenuEvent@QWebView@@MAEXPAVQContextMenuEvent@@@Z) ...... debugmyWebBrowser.exe:-1: error: LNK1120: 30 unresolved externals
这是因为在链接时,没有找到相应的链接库所致。我们手动指明要找的链接库:
//release edition #pragma comment(lib,"Qt5Widgets.lib") #pragma comment(lib,"Qt5WebKitWidgets.lib") //debug edition #pragma comment(lib,"Qt5Widgetsd.lib") #pragma comment(lib,"Qt5WebKitWidgetsd.lib")
release版本和debug版本只能选则其一,当你编译debug版本时,选择debug edition,否则会报 QWidget: Must construct a QApplication before a QWidget 错误。这是因为把Debug/Release的Dll混到一起。选对相应的版本就能解决这个错误。
到这里,就编译OK了。
开始运行我们的程序,当我们输入网址,并单击后,在debug窗口中输出了如下信息,如图所示:
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
上网搜索了下,是openssl的缘故。
我们需要openssl的两个dll文件,即libeay32.dll 和 ssleay32.dll 文件。下载安装openssl。
安装完毕后,将libeay32.dll 和 ssleay32.dll 文件拷贝到QtSDK中的存放有Qt5Network.dll和Qt5Networkd.dll的文件目录下。我的是G:QtQt5.4.25.4msvc2013_openglbin
将这两个DLL文件拷贝至QtQt5.4.25.4msvc2013_openglbin 目录之后,再次编译运行,世界多美好!
Qt5相对于Qt4来说,具有相当的变化,且行且记之。
Done!!!
注明:本文章属于转载,仅供行业人员学习交流使用,文章版权属于原创作者,在此向原创者致敬,感谢原创作者为大家学习交流提供精品内容。
相关文章推荐
- 解决qt提示:qt.network.ssl: QSslSocket: cannot call unresolved function DH_free和qt.network.ssl: QSslSocke
- Qt 5.4错误"qt.network.ssl: QSslSocket: cannot call"
- 解决qt5上qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_1_client_method 问题
- 解决Qt和QML都会出现的问题,Qt5.6.1 msvc2013版本,qt.network.ssl: QSslSocket: cannot call unresolved function SSLv2
- post qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method解决
- Qt Qml 中Image的QSslSocket问题解决
- Qt:解决跨线程调用socket/IO类,导致报错的问题(socket notifiers cannot be enabled from another thread)
- 解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题
- qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
- ubuntu qt opencv 安装 解决Cannot connect creator comm socket 和 Circular all <- first dependency dropped.
- LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 问题的解决
- QML使用WebView遇到的QSslSocket问题解决
- Qt 技巧: 解决未解析的SSL问题
- 关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法
- 解决unresolved external symbol "public: int __thiscall CWnd::KillTimer(unsigned int)" (?KillTimer@CWnd@@QAEHI@Z)问题
- 解决 PHP 报错问题:Call to undefined function mysql_connect()
- call to unavailable function system not available on ios问题解决
- 解决php类中提示Call to undefined function的问题
- LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 问题的解决
- linux又一次编译安装gd,添加freetype支持,解决验证码不显示问题,Fatal error: Call to undefined function imagettftext()