对 web::json::value::object 的未定义引用,即使包含 json.h

Undefined reference to web::json::value::object even if json.h included

我的代码如下所示:

void handle_get(http_request request)
{
   TRACE(L"\nhandle GET\n");

   std::vector< std::pair< utility::string_t, json::value > > answer;

   for(auto const & p : dictionary)
   {
      answer.push_back(std::make_pair(p.first, json::value(p.second)));
   }

   request.reply(status_codes::OK, json::value::object(answer));
};

然后我得到一个

undefined reference to `web::json::value::object(std::vector<std::pair<std::string, web::json::value>, std::allocator<std::pair<std::string, web::json::value> > >, bool)'

我不明白为什么没有看到answer没有std::string


std::map< utility::string_t, utility::string_t > dictionary;

我不明白为什么没有看到object(std::vector< std::pair< utility::string_t, json::value > >)的定义(我已经包含了cpprest/json.h)?

I do not understand why doesn't it see that answer has no std::string?

显然 utility::string_tstd::string 的 typedef,编译器显示的是真实类型,而不是 typedef 名称(尽管在这种情况下 real名称是 std::basic_string<char>,但编译器有一条特殊规则将其显示为更常见的名称 std::string).