C++高并发库系列(二):在Win下用MinGW/Qt来编译和使用libhv

7 篇文章 1 订阅
6 篇文章 1 订阅

我个人主要使用MinGW/Qt,不喜欢VS(太臃肿),所以用qmake比较多,对CMake不是很了解,编译libhv时也费了些时间,现对编译libhv遇到的问题进行解决。

一、编译

1、下载并解压libhv
项目地址:https://github.com/ithewei/libhv.git
码云镜像:https://gitee.com/ithewei/libhv.git
2、安装CMake
3、使用CMake环境的命令行进入libhv跟目录
4、输入命令:

md build
cd build
CMake -G "MinGW Makefiles" ../

5、等待CMake创建好Makefiles后,开始编译:

mingw32-make

命令后也可以加上具体的模块名,默认是编译所有模块。
6、编译到一部分模块时会出现链接错误(找不到一些符号,比如socket、send、closesocket等)
找到并打开文件:build\unittest\CMakeFiles\模块名.dir\linklibs.rsp,在最后加上 -lwsock32 -lWs2_32 -liphlpapi,保存,重新编译即可。估计有那么三四个项目需要修改一下链接库。
至此,libhv编译成功,库文件在build\lib下。

二、使用libhv库

新建一个console工程,将libhv项目的build文件夹中的include和lib文件夹复制到你的工程目录下,在pro文件中加上 LIBS += -L$$PWD/lib -lhv,打开main.cpp,添加代码:


#include "include/hv/hv.h"
#include "include/hv/HttpServer.h"


#include "ntsecapi.h"
#include <QCoreApplication>
#include <QDebug>
#include <WS2tcpip.h>
#include <windows.h>

int main(int argc, char *argv[])
{
    HttpService service;
    service.base_url = "/v1/api";
    service.POST("/echo", [](HttpRequest* req, HttpResponse* res) {
        res->body = req->body;
        return 200;
    });

    http_server_t server;
    server.port = 8080;
    server.service = &service;
    http_server_run(&server);

    QCoreApplication a(argc, argv);
    return a.exec();
}

编译,出错:inet_ntop was not declared in this scope

看了下源码,其实是有这个函数的(ws2tcpip.h中),仅当宏 _WIN32_WINNT >= 0x600时才可用,而我们的宏_WIN32_WINNT默认时0x502,在sdkddkver.h中有各类值,0x502是_WIN32_WINNT_WS03,而0x600是WIN6、VISTA、WS08、LONGHORN,所以只要是WinServer08和VISTA及以上就可以使用。我们在main.cpp中第一行加入(我的是Win7):
#define _WIN32_WINNT _WIN32_WINNT_WIN7
即可。编译通过。

参考文章

官网

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Boost是一个开源的C++集合,提供了许多功能强大的组件和工具,用于增强C++语言的功能和性能。Qt是一个跨平台的应用程序开发框架,而MinGW是一个在Windows平台上使用的GNU工具集。 要编译Boost并与QtMinGW一起使用,可以按照以下步骤进行操作: 1. 下载Boost:首先,你需要从Boost官方网站(https://www.boost.org/)下载Boost的源代码。选择适合你的操作系统和编译器的版本。 2. 解压Boost:将下载的Boost源代码解压到你选择的目录中。 3. 打开命令提示符:在Windows上,按下Win + R键,输入"cmd"并按下Enter键,打开命令提示符。 4. 进入Boost目录:使用cd命令进入你解压Boost源代码的目录。 5. 运行bootstrap.bat:在命令提示符中运行bootstrap.bat脚本文件,它将为你的系统配置编译环境。 6. 编译Boost:运行b2命令来编译Boost。你可以使用一些选项来指定编译器和其他参数。例如,如果你想使用MinGW编译器,可以运行以下命令: ``` b2 toolset=gcc ``` 7. 安装Boost编译完成后,运行b2 install命令来安装Boost。这将把编译好的文件复制到指定的目录中。 8. 配置Qt项目:在Qt项目中使用Boost时,你需要在项目文件(.pro文件)中添加相应的配置。例如,如果你想使用Boost的某个模块,可以在.pro文件中添加以下行: ``` LIBS += -lboost_module INCLUDEPATH += /path/to/boost ``` 以上是编译Boost并与QtMinGW一起使用的基本步骤。具体的配置和使用方法可能因你的项目需求和环境而有所不同。如果遇到问题,可以参考Boost官方文档或在相关社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值