Crow 编译和环境搭建

Crow与其说是编译,倒不如说是环境搭建。Crow只需要包含头文件,所以不用编译生成lib。

Crow环境搭建

  • boost(可以不编译boost,只需要boost头文件即可)
  • asio (可以不编译,直接包含头文件。不能直接使用boost的asio,boost的asio存在命名空间)
  • zlib (可选)用于web压缩,如果不使用压缩,可以不包含。开启需要定义宏:CROW_ENABLE_COMPRESSION
boost环境可参考:boost 编译
asio环境

下载:https://think-async.com/Asio/

编译:需要依赖boost(可以不编译boost)

  • 打开目录 ,找到Makefile.msc Makefile.mgw 修改BOOSTDIR指向自己的boost目录BOOSTDIR = C:\\Boost\\include\\boost_1_73
  • 打开VS命令行工具,执行nmake -f Makefile.msc编译完成
Hellow Word
  • 1.包含Crow头文件,boost头文件,asio头文件
    在这里插入图片描述

  • 2 开始使用Crow

crow::SimpleApp app;CROW_ROUTE(app, "/123")([&](crow::request& req, crow::response &resp) {resp.body = "123";resp.end();});app.port(18080).multithreaded().run();         
扩展:Crow加载静态资源

将静态资源放在运行目录statics,此时通过web访问http://127.0.0.1:18080/statics/index.html,将自动加载网页所需要的cs,js,png等资源。

 //处理所有未被处理的路径CROW_CATCHALL_ROUTE(app)([&](const crow::request& req, crow::response& resp) {//如果访问path以/statics/开始,if (_strnicmp(req.url.c_str(), "/statics/", 9) == 0){//拼接静态文件路径,不要以绝对路径,内部会处理:保证web服务的安全std::string path = req.url.substr(9);std::string file_path = std::string("statics/") + path;if (_access(file_path.c_str(), 00) == 0){resp.set_static_file_info(file_path);resp.code = crow::status::OK;resp.end();}}});

结果展示:
在这里插入图片描述

强烈建议hv(不支持压缩),一句代码搞定
HttpService router;
// statics为urlpath
// smart-yi-ui为当前服务静态资源所在目录
router.Static("/statics", "smart-yi-ui");

http://127.0.0.1:18080/statics/index.html

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

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

相关文章

【Linux】软件管理器yum和编辑器vim

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、Linux下安装软件的方案1.1 源代码安装1.2 rpm安装1.3 yum安装 二、Linux软件…

Spring Boot 配置热部署

前言 对于 Spring Boot 项目之中, 在刚开始学习的时候, 每当代码进行变动的时候, 想要生效那就必须要手动重启. 为什么要重启呢 ? 原因在于写的代码是依靠运行之后的 class 文件运行的, 当我们的代码更新以后, 如果不去手动重启, 那么就无法生成新的 class 文件, 执行的就是旧…

C#关键字学习

前言 记录C#编程中用到的关键字,对关键字的用途进行解释、记录、学习。会持续更新。 1. volatile 在C#中,volatile关键字用于声明一个字段(通常是一个共享的字段)是易变的,即每次访问该字段时,都要从内存…

蓝桥杯物联网竞赛_STM32L071_11_知识体系的查漏与补缺

太久没学单片机了,再重新过一遍查漏补缺,对其中之前没怎么在意的,而现在又发觉的问题进行再分析与补充 1. debug serial wire是干什么用的 这个东西我勾选不勾选都对我的程序没有什么影响,我很好奇是干什么用的,网上查…

vue3+elementPlus:el-table-column表格列动态设置单元格颜色

:cell-style属性 //html<el-tableempty-text"暂无数据":data"datalist.table":max-height"height"row-key"id"border:cell-style"cellStyle"> <el-table>//js //动态设置单元格颜色 const cellStyle ({ row, c…

Java后台面试相关知识点解析

文章目录 JavaJava中四种引用类型及使用场景集合HashMap源码及扩容策略HashMap死循环问题ConcurrentHashMap与HashtableConCurrentHashMap 1.8 相比 1.7 判断单链表是否有环&#xff0c;并且找出环的入口IO线程池线程池的几种创建方式判断线程是否可以回收线程池的7大核心参数线…

Golang 常用的时间转换

1、获取 Y-m-d H:i:s 格式的当前时间 t : time.Now().Format(time.DateTime) 2、获取当前时间戳 currentTime : time.Now() timestamp : currentTime.Unix() // 获取秒级时间戳 3、Y-m-d H:i:s 格式转时间戳 timeStr : "2023-09-01 12:00:00" t, err : time.Par…

matlab 仿真IIR低通滤波器,显示滤波前后的波形和频谱

figure fs500;%采样率 f130;%信号频率 f270;%信号频率 f3 100;%信号频率 f4 150;%信号频率 T2;%时宽2s nround(T*fs);%采样点个数 tlinspace(0,T,n);%时域横坐标 x sin(2*pi*f1*t) sin(2*pi*f2*t) sin(2*pi*f3*t) 2*cos(2*pi*f4*t); subplot(221); plot(t,x);%画时域图 xl…

【MySQL】lower_case_table_names作用及使用

知识点&#xff1a; lower_case_table_names 是mysql设置大小写是否敏感的一个参数。 场景&#xff1a;在使用dataease时&#xff0c;连接外部数据库&#xff0c;启动报错&#xff01;后查看官方文档&#xff0c;特别要求改数据库配置文件&#xff1a;lower_case_table_names …

Mybatis从入门到CRUD到分页到日志到Lombok到动态SQL再到缓存

Mybatis 入门 1.导入maven依赖 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version> </dependency>2.配置核心文件 <?xml version"1.0" encoding"U…

【MySQL知识体系】第1章 初始 MySQL

文章目录 第1章 初始 MySQL1.1 MySQL 介绍1.1.1 什么是 MySQL&#xff1f;1.1.2 MySQL 的特点&#xff1f;1.1.3 MySQL 默认端口&#xff1f; 1.2 安装 MySQL1.2.1在MacOS上安装MySQL1.2.2 在Windows上安装MySQL 1.3 如何选择 MySQL 客户端1.3.1 在MacOS上安装Workbench1.3.2 在…

【吊打面试官系列】Java虚拟机JVM篇 - 三道最简单最常问的JVM面试题

大家好&#xff0c;我是锋哥。今天分享三道最简单最常问的JVM面试题&#xff0c;希望对大家有帮助&#xff1b; 一&#xff0c;请问JDK与JVM有什么区别&#xff1f; 简单来说&#xff1a; 1. JVMJava 运行器&#xff1b; 2. JREJVM Java 基础&核心类库&#xff1b; 3. JD…

【贪心算法】专题练习二

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;买卖股票的最佳时机&#x1f449;&…

吴恩达深度学习笔记:神经网络的编程基础2.1-2.3

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第二周&#xff1a;神经网络的编程基础 (Basics of Neural Network programming)2.1 二分类(Binary Classification)2.2 逻辑回归(Logistic Regression) 第一门课&#xff1a;神经网络和深度学…

【机器学习】详解正则化思想

我们的生活当中真正有意义或者有价值的部分可以概括为两句话&#xff1a;一句话是&#xff1a;弄清楚某个东西是怎么一回事&#xff0c;另一句话是&#xff0c;弄清楚某个东西是怎么一回事。头一句话&#xff0c;我们弄清楚的那个东西对于我们而言是未知的&#xff0c;但是已经…

【数据结构】二、线性表:4.循环链表的定义及其基本操作(循环单链表,循环双链表的初始化、判空、判断头结点、尾结点、插入、删除)

文章目录 4.循环链表4.1循环单链表4.1.1初始化4.1.2判断单链表是否为空4.1.3判断p结点是否为循环单链表的表尾结点 4.2循环双链表4.2.1初始化4.2.2判断循环链表是否为空4.2.3判断结点p是否为循环双链表的表尾结点4.2.4双链表的插入4.2.5双链表的删除 4.循环链表 4.1循环单链表…

Android自定义横向滑动菜单的实现

本文讲述了Android自定义横向滑动菜单的实现。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 前言 开发安卓过程中&#xff0c;经常会用到标题栏的样式&#xff0c;有时候传统方式不能满足开发者的需要&#xff0c;这时候就需要自定义控件来实现。&#xff08;注意&…

ubuntu开机提示:F2=setup,F12=Boot Menu

开机提示:F2setup,F12Boot Menu-ZOL问答 这应该是没有找到系统启动文件&#xff0c;导致让你选择setup&#xff08;安装系统&#xff09;和BOOT MENU&#xff08;选择启动位置&#xff09;。 可能是硬盘没有接稳妥&#xff0c;也可能是系统文件丢失&#xff01; 建议重装一下系…

Mac版2024 CleanMyMac X 4.14.6 核心功能详解以及永久下载和激活入口

CleanMyMac 是 macOS 上久负盛名的系统清理工具&#xff0c;2018 年&#xff0c;里程碑式版本 CleanMyMac X 正式发布。不仅仅是命名上的变化&#xff0c;焕然一新的 UI、流畅的动画也让它显得更加精致。新增的系统优化、软件更新等功能&#xff0c;使得在日常使用 macOS 时有了…

短视频矩阵系统----矩阵系统源码搭建(技术门槛?)

短视频矩阵是什么意思&#xff1f;短视频矩阵的含义可以理解为全方位的短视频账号&#xff0c;通过不同的账号实现全方位的品牌展示。实际上是指一个短视频账号&#xff0c;通过不同的链接实现品牌展示&#xff0c;在不同的粉丝流量账号中互相转发同一个品牌&#xff0c;在主账…