QT5.12编译QtHttpServer,亲测可用_nodeeditor-master如何编译成库给qt5.12的msvc编译使用
文章目录
- 前言
- 一、下载源码
- 二、不依赖QtSslServer的编译
- 二、依赖QtSslServer的编译
- 三、编译出错的处理
- 三、拷贝QtHttpServer到QT安装目录
- 四、测试QtHttpServer
前言
QT6自带了QtHttpServer库,但是6以下的版本需要自己编译,以下用Qt5.12.12(msvc2015_64Bit)版本为例,编译通过,原则上5.9以上的版本都可按本文编译方法。
注:Qt5.9以下不可用,因为源码会用到handleConnection。
一、下载源码
1.下载QtHttpServer源码,网址:https://github.com/qt-labs/qthttpserver
2.下载第三方依赖http-parser源码,网址:https://github.com/nodejs/http-parser
3.分别解压两个文件,复制http-parser-master文件夹下的文件到qthttpserver-master\\src\\3rdparty\\http-parser目录下。
3.打开http-parser-master文件夹下的.qmake.conf文件,修改MODULE_VERSION,改为MODULE_VERSION = 5.12.12
4.QtCreator 打开qthttpserver-master目录下的qthttpserver.pro
5.打开项目设置,开启影子编译,设置路径为源码/build,这是为了方便后续拷贝库相关文件到Qt安装目录下。
开始编译,以下分为不依赖ssl和依赖ssl两种:
二、不依赖QtSslServer的编译
很多项目并不需要ssl,需要ssl的看后面章节。
1.打开src/src.pro,注释掉qtConfig(ssl)那三行。
2.打开src/httpserver.pro,注释掉qtConfig(ssl): QT += sslserver 一行。
3.编译生成
二、依赖QtSslServer的编译
1.QtHttpServer默认是依赖ssl的,所以把一去掉的那些注释改回来,直接编译即可。
2.这个编译很容易出错,即使编译出来了,后面使用也很麻烦(需要使用openssl,且生成cert和key)不建议用这种,建议使用上面的不依赖ssl的编译,如果应用实在需要ssl支持,可以用nginx配置代理ssl,而不是在httpserver实现里用ssl。
三、编译出错的处理
1.编译报错提示:无法打开\"QtHttpServer/xxx.h\"文件 时,把改为\"xxx.h\",#include 改为\"xxx.h\"
2.编译报错无法链接Qt5SslServer时,这是编译依赖QtSslServer时容易出现的错误。打开httpserver.pro文件,注释 qtConfig(ssl): QT += sslserver 一行,在文件最后加入:
win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/…/…/build/lib/ −lQt5SslServer
else:win32:CONFIG(debug,debug∣release):LIBS+=−L$$PWD/…/…/build/lib/ -lQt5SslServerd
此处LIBS的路径改为自己电脑上的生成 Qt5SslServer.lib 库所在路径。
三、拷贝QtHttpServer到QT安装目录
把编译好的qthttpserver库相关文件放到对应的qt安装目录下。
1.拷贝qthttpserver-master\\src\\httpserver目录下的头文件到qthttpserver-master\\build\\include\\QtHttpServer,拷贝qthttpserver-master\\src\\sslserver目录下的头文件到qthttpserver-master\\build\\include\\QtSslServer。
2.拷贝qthttpserver-master\\build\\bin下的全部文件放到Qt5.12.12\\5.12.12\\msvc2015_64\\bin。
3.拷贝qthttpserver-master\\build\\include下的QtHttpServer和QtSslServer文件夹到Qt5.12.12\\5.12.12\\msvc2015_64\\include。
4.拷贝qthttpserver-master\\build\\lib下的.dll、.lib、.prl共12个文件到Qt5.12.12\\5.12.12\\msvc2015_64\\lib。
5.拷贝qthttpserver-master\\build\\mkspecs\\modules-inst下的文件到Qt5.12.12\\5.12.12\\msvc2015_64\\mkspecs\\modules。
四、测试QtHttpServer
1.新建一个工程,在.pro文件里添加:QT += sslserver httpserver,如果不依赖ssl,则添加:QT += httpserver
2.main代码如下:
① 使用ssl,先测试QSslSocket::supportsSsl()是否支持,返回true即可。
② 如果不可使用,需要安装openssl,网址:https://slproweb.com/products/Win32OpenSSL.html,此处安装的是32Bit Light,下载安装好即可。
③ 以后使用可以把libcrypto-1_1.dll和libssl-1_1.dll拷贝到应用程序下。
④ 需要使用openssl生成cert和key。
#include \"mainwindow.h\"#include