使用jsoncpp NuGet包时获取无法解析的外部符号

时间:2018-07-25 23:48:46

标签: c++ nuget-package fstream jsoncpp

我有这段简单的代码,我在使用jsoncpp版本0.6.0.1 NuGet包从VS2013中的json文件中读取内容。

#include <iostream>
#include <fstream>
#include "json\json.h"
using namespace std;

Json::Value readJson(){
    Json::Value root;
    ifstream rootfile("restore.json");
    rootfile >> root;
    return root;
}

void main(){

    Json::Value root = readJson();
    cout << "Hello" << endl;
    system("pause");

}

我不断收到错误Error 1 error LNK2019: unresolved external symbol "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl Json::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,class Json::Value &)" (??5Json@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV12@AAVValue@0@@Z) referenced in function "class Json::Value __cdecl readJson(void)" (?readJson@@YA?AVValue@Json@@XZ)

问题出在operator>>上。因此我取消了rootfile >> root的注释,错误消失了。但是我不明白为什么这条线是个问题。我添加了jsoncpp.lib及其链接器的路径。我不确定现在缺少哪一部分。

1 个答案:

答案 0 :(得分:0)

问题在于,使用jsoncpp版本0.6.0.1时,阅读器文件中没有Json::operator>>函数,因此我遇到了以上错误。我用以下代码替换了rootfile >> root,并解决了我的问题。

Json::Reader reader;
bool ok = reader.parse(rootfile, root, true);