2016-08-19 60 views
1

當我運行下面的代碼:未定義參考的Json ::價值和JSON ::讀者

#include <cstdio> 
#include <iostream> 
#include <fstream> 
#include <cstring> 
#include <C:\Users\User\Documents\jsoncpp-master\dist\json\json.h> 
#include <C:\Users\User\Documents\jsoncpp-master\dist\json\json-forwards.h> 

using namespace std; 

int main(){ 
    Json::Value root; 
    Json::Reader reader; 

    ifstream file("test.json"); 

    return 0; 
} 

我收到以下錯誤:

undefined reference to `Json::Reader::Reader()' 
undefined reference to `Json::Value::Value(Json::ValueType)' 

我試圖寫一個程序來讀取JSON文件和此代碼還必須輸出JSON文件中的數據以供其他C++模塊使用。

UPDATE

#include <cstdio> 
#include <iostream> 
#include <fstream> 
#include <cstring> 
#include "dist\jsoncpp.cpp" 
using namespace std; 

int main(){ 

    Json::Value root; 
    Json::Reader reader; 

    ifstream file("test.json"); 

    return 0; 
} 

我已經改變的代碼刪除完整鏈接,插入dist文件夾我後,我跑:

python amalgamate.py 

我進的頭文件到C: \ MinGW \包括

我現在在jsoncpp.cpp文件(這是我運行python命令後,我沒有改變它的文件)得到了很多錯誤。所有的錯誤 說了同樣的信息,那就是:

first defined here 
+0

在哪裏定義了'Json'類? – MicroCheapFx

+0

**鏈接器**錯誤。你必須鏈接到jsoncpp庫。 – Jarod42

+1

[OT]:不要使用包含的完整路徑。指定您的編譯系統額外的目錄來查找標題。 – Jarod42

回答

1

這是不夠的,只包括H文件到您的源代碼。 您需要在您的項目中編譯jsoncpp.cpp。 請按照https://github.com/open-source-parsers/jsoncpp#generating-amalgamated-source-and-header 並將jsoncpp.cpp,json/json.h,json/forwards.h添加到您的項目中。

+0

非常感謝鏈接。我按照說明進行了操作,現在又出現另一個錯誤,如更新 – user9492428

+0

@ user949所示:您沒有按照說明進行操作。你爲什麼#包含一個'.cpp'文件? –

+0

@LightnessRacesinOrbit在說明中需要添加到項目中的dist \ jsoncpp.cpp源文件 – user9492428