对 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_t
是 std::string
的 typedef,编译器显示的是真实类型,而不是 typedef 名称(尽管在这种情况下 real名称是 std::basic_string<char>
,但编译器有一条特殊规则将其显示为更常见的名称 std::string
).
我的代码如下所示:
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_t
是 std::string
的 typedef,编译器显示的是真实类型,而不是 typedef 名称(尽管在这种情况下 real名称是 std::basic_string<char>
,但编译器有一条特殊规则将其显示为更常见的名称 std::string
).