Windows下写一个C++项目,提供API接口供页面使用

Windows下写一个C++项目,提供API接口供页面使用

一、准备工作

C++如果要提供网络接口供页面使用,需要使用cpprest库,所以需要提前下载安装cpprest库。进而引出vcpkg包管理工具的下载安装。在cmake编译过程中,还需要用到zlib,所以还需要提前下载zlib。东西比较多,坑也比较多,一步一步来。

本次编译环境:

Windows11

Visual Studio 2017

cmake 3.25.1

CLion 2022.3.2

1.Windows下安装vcpkg包管理工具

在Windows下使用 vcpkg 工具安装 C++ 库,您可以按照以下步骤进行操作:

  1. 下载 vcpkg 工具:在浏览器中访问 vcpkg 的 GitHub 存储库 https://github.com/microsoft/vcpkg

  2. 在 GitHub 存储库页面中,点击 “Code” 按钮,然后选择 “Download ZIP” 选项。

  3. 下载 ZIP 存档文件后,将其解压缩到您选择的目录中。

  4. 打开cmd或 PowerShell 并导航到 vcpkg 目录。

  5. 在命令提示符中执行以下命令,用于初始化 vcpkg 工具:

    .\bootstrap-vcpkg.bat
    

    执行完成后,目录如下:

  6. 初始化完成后,可以使用以下命令来安装所需的 C++ 库。

  7. 安装完成后,您可以在您的项目中使用 vcpkg 安装的库。在项目的编译设置中,将包含正确的库路径和头文件路径,以便编译器能够找到并链接这些库。

请注意,vcpkg 工具可以用于安装许多其他的 C++ 库,不仅限于 C++ REST SDK。您可以使用相同的方法来安装其他需要的库。在使用 vcpkg 安装库之前,请确保您已经安装了适当的构建工具(如Visual Studio)和配置了相关的编译环境。

vcpkg常用指令:

vcpkg install 安装指定软件包/库
vcpkg remove 卸载一个已安装的库
vcpkg update显示需要更新的库的列表
vcpkg list列出当前vcpkg上已安装的库
vcpkg version显示vcpkg的版本信息
vcpkg integrate install使已安装的软件包在整个用户中可用,第一次使用时需要管理员权限
vcpkg integrate remove删除用户范围内的集成

vcpkg 目录文件及文件夹说明:

buildtrees - 包含从中生成每个库的源的子文件夹,一般在xxxx.clean文件夹下。
docs - 文档和示例。
downloads - 所有已下载的工具或源的缓存副本。 运行安装命令时,vcpkg 会首先搜索此处。
installed - 包含每个已安装库的标头和二进制文件。 与 Visual Studio 集成时,实质上是相当于告知它将此文件夹添加到其搜索路径。
packages - 在不同的安装之间用于暂存的内部文件夹。
ports - 用于描述每个库的目录、版本和下载位置的文件。 如有需要,可添加自己的端口。
scripts - 由 vcpkg 使用的脚本(CMake、PowerShell)。
toolsrc - vcpkg 和相关组件的 C++ 源代码。
triplets - 包含每个受支持目标平台(如 x86-windows 或 x64-uwp)的设置

2.vcpkg下载cpprest

在vcpkg目录下,打开cmd或 PowerShell。执行以下命令进行安装:

vcpkg install cpprestsdk

安装完成后,可以查看vcpkg安装列表:

vcpkg list

在这里插入图片描述

下面是cpprest的实际路径。

在这里插入图片描述

3.下载zlib

在vcpkg目录下,打开cmd或 PowerShell。执行以下命令进行安装:

vcpkg install zlib

安装完成后,可以查看vcpkg安装列表:

vcpkg list

在这里插入图片描述

我这里就有个问题,我在vcpkg\vcpkg-master\installed\x64-windows\include路径下找不到zlib。。。,而且我想用vcpkg remove zlib删除zlib,再重新安装,可是remove不起作用。。。

没办法,只能自己手动安装。具体步骤如下:

1.进入zlib开源官网 https://www.zlib.net/

2.找到入口

在这里插入图片描述

3.点击下载

在这里插入图片描述

4.将压缩包解压缩到 E:\work\hgs\c++\vcpkg\vcpkg-master\installed 路径下

在这里插入图片描述

二、项目初始化

1.创建目录,新建两个文件:main.cppCMakeLists.txt。功能简单点,就是提供一个两数相加的接口,获取接口输入的两个数,返回两数的和。

main.cpp:

#include <iostream>
#include <string>
#include <cpprest/http_listener.h>
#include <cpprest/json.h>

using namespace web;
using namespace web::http;
using namespace web::http::experimental::listener;
using namespace std; 
void handleCalculate(const http_request& request)
{
	
    auto json = request.extract_json().get();

    int num1 = json[U("num1")].as_integer();
    int num2 = json[U("num2")].as_integer();
	
	cout << "num1="<<to_string(num1) << endl;
	cout << "num2="<<to_string(num2) << endl;
    int sum = num1 + num2;

    json::value response;
    response[U("sum")] = json::value::number(sum);

    request.reply(status_codes::OK, response);
}
int main()
{
	cout << "main start" << endl;
    http_listener listener(L"http://localhost:5000/api/calculate");
    listener.support(methods::POST, handleCalculate);
    listener.open().wait();

    std::cout << "Listening on http://localhost:5000/api/calculate" << std::endl;
    std::cout << "Press ENTER to exit." << std::endl;
    std::cin.ignore();

    listener.close().wait(); 

    return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(phonebooks)

set(CMAKE_CXX_STANDARD 11)

#这里要写本机的vcpkg路径
include(E:/work/hgs/c++/vcpkg/vcpkg-master/scripts/buildsystems/vcpkg.cmake)

#这将告诉 CMake 在构建项目时查找并使用 C++ REST SDK。
find_package(cpprestsdk REQUIRED)

# 添加可执行文件
add_executable(phonebooks main.cpp)

# 链接 cpprestsdk 库
target_link_libraries(phonebooks PRIVATE cpprestsdk::cpprest)

2.在本目录下打开cmd或 PowerShell,执行以下命令来生成项目

cmake .

在这里插入图片描述

编译成功!

三、项目调试

我使用的CLion 2022.3.2编译器,直接打开项目。

在这里插入图片描述

在clion里点击运行,使用postman发送请求:

在这里插入图片描述

接口返回正确结果,完美收工!!

参考引用:

https://blog.csdn.net/fangqingivu/article/details/116937021

.3.2编译器,直接打开项目。

[外链图片转存中…(img-QtRiojuS-1688721615162)]

在clion里点击运行,使用postman发送请求:

[外链图片转存中…(img-WZwUN6CO-1688721615162)]

接口返回正确结果,完美收工!!

参考引用:

https://blog.csdn.net/fangqingivu/article/details/116937021

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高考我军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值