' http':具有此名称的命名空间不存在C ++ rest SDK

时间:2017-12-03 14:31:04

标签: rest c++11 visual-studio-2015 casablanca

我正在开发一个使用C ++ RESTAPI的项目。我跟随卡萨布兰卡教程。根据该教程,我使用NuGet包管理器将Casablanca添加到我的C ++控制台应用程序项目中。我正在使用Visual Studio 2015企业版。当我尝试构建我的解决方案' http':具有此名称的命名空间不存在时,我收到错误


' web':具有此名称的命名空间不存在

' web':不是类或命名空间名称

' http':具有此名称的命名空间不存在

' web':不是类或命名空间名称

'客户端':具有此名称的命名空间不存在

'并发':不是类或命名空间名称

' streams':具有此名称的命名空间不存在。 enter image description here ' make_shared':不是' std'

的成员
enter code here
// RESTProject.cpp : Defines the entry point for the console application.
//
#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
#include <fstream>
#include <iostream>
#include "stdafx.h"

using namespace std;
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace concurrency::streams;
using namespace std;

int main()
{
    auto filestream = std::make_shared<concurrency::streams::ostream>();
    pplx::task<void> requesttask =concurrency::streams::fstream::open_ostream(U("result.html")).then([=](concurrency::streams::ostream outfile)
    {
        *filestream = outfile;


        // Create http_client to send the request.
        http_client client(U("http://www.bing.com/"));

        // Build request URI and start the request.
        uri_builder builder(U("/search"));
        builder.append_query(U("q"), U("cpprestsdk github"));
        return client.request(methods::GET, builder.to_string());
    });
    return 0;
}

2 个答案:

答案 0 :(得分:0)

我不得不添加stdio.h include 解决问题

答案 1 :(得分:0)

在文档之后,不建议通过 NuGet 包安装。对于Windows,适当的方法是使用 Vcpkg

进行安装
  • GitHub克隆vcpkg repo。请记住,这些包需要很大的空间( CppRestSDK 及其依赖关系大约10Gb)。
  • 在根文件夹中运行bootstrapper:“bootstrap-vcpkg.bat”。
  • 使用管理员权限运行“vcpkg integrate install”,以配置Visual Studio以查找所有vcpkg头文件和二进制文件。
  • 通过命令“vcpkg install cpprestsdk cpprestsdk:x64-windows”安装 CppRestSDK (可能需要约1小时)。

之后,重新启动VS并尝试创建空项目并添加一些引用,例如:

#include <cpprest/http_client.h>

键入文件路径时,应该自动完成,也可以从上下文菜单中打开此文件。请记住,这可能不适用于在先前版本的VS中创建的现有项目。