无法在 CPP 应用程序中使用 CPR 库打开包含文件 cpr/cprver.h

can not open include file cpr/cprver.h using CPR library in CPP application

你好,我在 cpp 应用程序中使用 CPR 库向我的 api 发出 http 请求,但是在我添加其他包含目录后,我收到类似 'can not open include file cpr/cprver.h'

的错误

根据我的检查,cpr 文件夹中没有名为 cprver.h 的文件。

我做了什么:

#include <cpr/cpr.h>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    cpr::Response r = cpr::Get(
        cpr::Url{ "https://jsonplaceholder.typicode.com/todos/1" });

    cout << r.status_code << "\n";            // 200
    cout << r.header["content-type"] << "\n"; // application/json;charset=utf-8
    cout << r.text << "\n";                   // JSON text string

    return 0;
}
error: can not open include file cpr/cprver.h.
There is no error in code.
Hope i explain well. Thank you in advance.

我认为仅从 Github 下载 cpr 库是不够的,您应该针对您的二进制文件构建 link cpr

根据documentation,有几种使用方法cpr

Cmake

If you already have a CMake project you need to integrate C++ Requests with, the primary way is to use fetch_content. Add the following to your CMakeLists.txt.

include(FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
                         GIT_TAG 6ea2dec23c3df14ac3b27b7d2d6bbff0cb7ba1b0) # The commit hash for 1.8.1. Replace with the latest from: https://github.com/libcpr/cpr/releases
FetchContent_MakeAvailable(cpr)

这将产生目标 cpr::cpr,您可以 link 反对典型的方式:

target_link_libraries(your_target_name PRIVATE cpr::cpr)

应该可以了!无需自己处理 libcurl。所有依赖项都为您处理。 所有这些都可以在此处的示例中找到。

如果你想在不同的平台上构建你的应用程序,我认为 Cmake 是正确的方法。

vcpkg

由于您正在研究 Windows,我认为 vcpkg 是最简单的方法:

您可以使用 vcpkg 依赖管理器下载并安装 cpr:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr

vcpkg 中的 cpr 端口由 Microsoft 团队成员和社区贡献者保持最新。如果版本已过期,请在 vcpkg 存储库上创建问题或拉取请求。