Oatpp编译使用Windows版本----windows搭建http服务器

news2025/4/5 21:02:08

来源:微信公众号「编程学习基地」

文章目录

      • 一、Oatpp 编译
        • 下载源码
        • cmake构建工程
          • Configue配置x64
          • Generate构建项目
        • VS2019编译项目
      • 二、Oatpp搭建http服务器
        • VS2019创建空项目
        • 导入oatpp项目配置

一、Oatpp 编译

下载源码

下载源码:https://github.com/oatpp/oatpp

git拉取或者下载压缩包都可,我是在2023.8.29日拉的最新代码编译运行的

cmake构建工程

下载的 oatpp-master 文件夹里面建立两个文件夹 x64 和 win32 ,这两个文件夹用来作为工作目录。

请添加图片描述

运行 CMake (cmake-gui)

请添加图片描述

添加项目路径和 build 目录

请添加图片描述

Configue配置x64

点击Configure按钮

我用的是VS2019,项目,配置选择x64其他默认

请添加图片描述

选择x64 , 这样编译出来的就是x64版本的软件。如果要编译win32版本的,就选择Win32

点击Finish按钮,回到CMake主窗口

请添加图片描述

在点击finish的时候已经在Configure了,出现上图的Configureing done即可

Generate构建项目

继续点击Generator

请添加图片描述

出现 “Generatoring done” 即可

VS2019编译项目

打开x64文件夹就会看到里面已经产生了Visual Studio的解决方案

请添加图片描述

双击 oatpp.sln 文件,启动Visual Studio

请添加图片描述

编译oatpp生成oatpp.lib库

请添加图片描述

编译完成

请添加图片描述

文件夹 D:\msys64\home\xian-3\github\oatpp-master\x64\src\Debug 里面的oatpp.lib文件,就是我们需要的库文件,它是Debug x64版本的,可以在VS编译的时候选择Release版本,或者 cmake configue 的时候选择win32版本。

文件夹 D:\msys64\home\xian-3\github\oatpp-master\src 里面就是头文件目录

二、Oatpp搭建http服务器

VS2019创建空项目

创建一个空项目,添加测试代码main.cpp和handler.h

main.cpp

// main.cpp
#include "oatpp/web/server/HttpConnectionHandler.hpp"
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
#include "oatpp/network/Server.hpp"
#include "handler.h"
#pragma comment(lib,"oatpp.lib")
#pragma comment(lib,"oatpp-test.lib")
void run()
{
    // 为 HTTP 请求创建路由器
    auto router = oatpp::web::server::HttpRouter::createShared();

    // 路由 GET - "/hello" 请求到处理程序
    router->route("GET", "/hello", std::make_shared<Handler>());

    // 创建 HTTP 连接处理程序
    auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);

    // 创建 TCP 连接提供者
    auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({ "0.0.0.0", 8080, oatpp::network::Address::IP_4 });

    // 创建服务器,它接受提供的 TCP 连接并将其传递给 HTTP 连接处理程序
    oatpp::network::Server server(connectionProvider, connectionHandler);

    // 打印服务器端口
    OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());

    // 运行服务器
    server.run();
}

int main()
{
    // 初始化 oatpp 环境
    oatpp::base::Environment::init();

    // 运行应用
    run();

    // 销毁 oatpp 环境
    oatpp::base::Environment::destroy();

    return 0;
}

handler.h

// handler.h
#ifndef HANDLER_H
#define HANDLER_H

#include "oatpp/web/server/HttpRequestHandler.hpp"

#define O_UNUSED(x) (void)x;

// 自定义请求处理程序
class Handler : public oatpp::web::server::HttpRequestHandler
{
public:
    // 处理传入的请求,并返回响应
    std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
        O_UNUSED(request);

        return ResponseFactory::createResponse(Status::CODE_200, "Hello, World!");
    }
};

#endif // HANDLER_H

导入oatpp项目配置

配置头文件目录

请添加图片描述

配置库目录

请添加图片描述

添加库

请添加图片描述

oatpp-test.lib
oatpp.lib
wsock32.lib
ws2_32.lib

ps: wsock32.lib ws2_32.lib这两个库没加一直报错,翻了好久博客多次测试才找到原因,要不是好几次粉丝找我windows搭建http服务器我都不想写这篇博客

编译运行,postmain验证

请添加图片描述

第一次运行会弹窗是否允许网络访问

over,下课

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

装备一台ubuntu

问题&#xff1a;linux在执行ifconfig时出现 Command ‘ifconfig‘ not found ,but can be installed with: 这种情况解决方案&#xff08;参考&#xff09; 描述&#xff1a; 1、安装好linux后想查一下ip地址&#xff0c;一查出现了这种情况 2、执行了这个命令&#xff0c;出…

如何使用CSS实现一个带有动画效果的进度条?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML 结构&#xff1a;⭐ CSS 样式&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…

Android开发基础之服务Service

尽可能简单理解Android开发四大组件中的服务Service&#xff0c;用简单的例子和语言。 概念 长期在后台运行&#xff0c;与用户没有交互&#xff0c;比如音乐&#xff0c;可以在后台播放&#xff0c;同时可以去看书&#xff0c;浏览新闻等 配置 由于Service也是四大组件之…

2.2 概念模型

思维导图&#xff1a; 学习目标&#xff1a; 学习数据库的概念模型涉及对抽象思维和具体实践的结合。我会采取以下策略来有效学习&#xff1a; 1. **基础理论学习**&#xff1a; - 阅读经典教材和参考书籍&#xff0c;理解关键概念如实体、属性、关系等。 - 观看在线课…

SV-6002Y 网络对讲求助模块,带3W功放输出和一路30W功放输出

SV-6002Y 网络对讲求助模块&#xff0c;带3W功放输出和一路30W功放输出 SV-6002Y是我司一款求助对讲模块&#xff0c;具有10/100M以太网接口&#xff0c;其接收网络的音频数据&#xff0c;实时解码播放&#xff0c;还可配置麦克风输入和扬声器输出。SV-6002Y可实现对讲、广播、…

【爬虫】5.5 Selenium 爬取Ajax网页数据

目录 AJAX 简介 任务目标 创建Ajax网站 创建服务器程序 编写爬虫程序 AJAX 简介 AJAX&#xff08;Asynchronous JavaScript And XML&#xff0c;异步 JavaScript 及 XML&#xff09; Asynchronous 一种创建交互式、快速动态网页应用的网页开发技术通过在后台与服务器进行…

在字节做了5年测试,6月被无情辞退,想给还在摸鱼的兄弟提个醒...

先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入华为&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是5年的工作经验吧。 这5年之间完成了一次…

Linux整合seata

1、到官网下载seata&#xff0c;这里以ZIP为例 2、使用远程工具上传ZIP包 3、通过命令解压 unzip seata-server-1.7.0.zip4、修改配置文件、新建表&#xff0c;参考我之前的文章 分布式系统的多数据库&#xff0c;实现分布式事务回滚&#xff08;1.7.0 seata整合2.0.4nacos…

高薪项目经理的12条成长指南

大家好&#xff0c;我是老原。 有不少朋友私信问我&#xff1a; 老原&#xff0c;你做项目经理时&#xff0c;还能同时兼顾写公众号、小红书、回答知乎、管理社群&#xff0c;还有给我们解答问题的……是怎么做到的。 其实&#xff0c;关于提升工作效率这方面啊&#xff0c;…

数据库CPU飙高问题定位及解决

在业务服务提供能力的时候&#xff0c;常常会遇到CPU飙高的问题&#xff0c;遇到这类问题&#xff0c;大多不是数据库自身问题&#xff0c;都是因为使用不当导致&#xff0c;这里记录下业务服务如何定位数据库CPU飙高问题并给出常见的解决方案。 CPU 使用率飙升根因分析 在分…

云计算——虚拟化中的网络架构与虚拟网络(文末送书)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 前期回顾 前言 一.网卡虚拟化 1.网卡虚拟化方法&…

FAQ专题 | smardaten园区能源集控场景8大问题解答,建议收藏!

睿友们进来看&#xff0c;面对smardaten的IoT数据能力&#xff0c;你一定问过这些问题&#xff01; 本期针对智慧园区、能源等集控场景下的数据接入常见问题&#xff0c;答案大放送啦~~&#xff08;文末有福利&#x1f447;&#xff01;&#xff09; Q1&#xff1a;如何在智慧…

虚拟机的使用

首先需要安装VMware软件&#xff0c;这是虚拟机&#xff0c;在里面可以实现在windows的笔记本上运行包括&#xff0c;windows11和linux系统的开发和研究。 VMware是一种虚拟化技术&#xff0c;可以让你在一台物理计算机上运行多个操作系统和应用程序&#xff0c;而不需要重启或…

Redis——如何解决redis穿透、雪崩、击穿问题

目录 一、查询商品信息的常规代码示例二、缓存击穿2.1、缓存击穿的理解2.2、缓存击穿的解决方案2.3、解决缓存击穿的代码示例 三、缓存雪崩3.1、缓存雪崩的理解3.2、缓存雪崩的解决方案3.2.1、缓存集中过期的情况3.2.2、缓存服务器宕机的情况3.2.3、缓存服务器断电的情况 3.3、…

lib61850 学习笔记一 (概念)

IEC61850 定义60多种服务满足变电站通信需求。支持在线获取数据模型&#xff0c;也支持IED水平通信&#xff08;GOOSE报文&#xff09; 术语定义 间隔 bay: 变电站由据应公共功能紧密连接的子部分组成。 例如 介于进线或者 出线 和母线之间的断路器&#xff1b;二条母线之间…

克隆 Windows 硬盘的 5 个理由

您什么时候需要克隆 Windows 硬盘&#xff1f; ​根据用户研究&#xff0c;以下是您的五个常见原因&#xff1a; 备份&#xff1a;克隆 Windows 硬盘是创建所有数据备份的推荐方法。如果发生任何硬盘故障&#xff0c;您可以快速将所有数据恢复到新硬盘。 升级&#xff1a;如…

【C51基础实验 点亮一颗LED】

51单片机项目基础篇 点亮一颗LED1、认识头文件1.1、头文件的书写格式分类1.2、头文件存放的内容 2、硬件电路设计3、软件设计4、编译结果5、结束语 点亮一颗LED 前言&#xff1a; 了解了前面篇章的内容&#xff0c;工程模板就不多赘述了&#xff0c;这篇就开始写51 单片机的第…

Compose眼珠跟随手势移动的笑脸

眼珠跟随手势移动的笑脸&#x1f601; 前言一、Canvas画图笑脸微笑眼睛和眼珠子 二、跟随手势移动transformableanimateFloatAsState 总结 前言 阅读本文需要一定compose基础&#xff0c;如果没有请移步Jetpack Compose入门详解&#xff08;实时更新&#xff09; 在网上看到有…

MySql DATE_ADD()实践

DATE_ADD() 函数使用 定义和用法 DATE_ADD() 函数向日期添加指定的时间间隔。 DATE_ADD(date,INTERVAL expr type) -- 获取当前时间2天后的时间 SELECT DATE_ADD(NOW(),INTERVAL 2 day) -- 获取当前时间2天前的时间 SELECT DATE_ADD(NOW(),INTERVAL -2 day)

2023最新MathType7.4中文版数学公式编辑器

MathType是一款专业的数学公式编辑器&#xff0c;理科生专用的必备工具&#xff0c;可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。可视化公式编辑器轻松创建数学方程式和化学公式。兼容Office Word、PowerPoint、Pages、Keynote、Numbers 等7…