2016-06-13 2 views
0

Я пытаюсь создать Json-сообщение с помощью Jsoncpp. Я сделал следующим образом:Создать Json Message с помощью JsonCpp

#include <string> 
#include <iostream> 
#include <sstream>  
#include <json/json.h> 

int main() 
{ 
    std::string Value = "5.17e9"; 
    std::string Type = "TX"; 
    std::string Parameter = "Frequency"; 

    Json::Value root; 
    root.append("Type"); 
    root.append("Parameter"); 
    root.append("Value"); 
    root["Type"] = Type; 
    root["Parameter"] = Parameter; 
    root["Value"] = Value; 

    Json::FastWriter fastwriter; 
    std::string message = fastwriter.write(root); 
    std::cout<<message<<std::endl; 

    return 0; 
} 

компиляции этого кода, используя следующую командную строку:

g++ -o clients clients.cpp -ljsoncpp -lzmq 

Этот вид ошибки происходит:

clients.cpp:(.text._ZN20multi_usrp_emulation7client1Ev[_ZN20multi_usrp_emulation7client1Ev ]+0x1d9): undefined reference to `Json::Value::operator=(Json::Value)' 
clients.cpp:(.text._ZN20multi_usrp_emulation7client1Ev[_ZN20multi_usrp_emulation7client1Ev ]+0x224): undefined reference to `Json::Value::operator=(Json::Value)' 
clients.cpp:(.text._ZN20multi_usrp_emulation7client1Ev[_ZN20multi_usrp_emulation7client1Ev ]+0x26c): undefined reference to `Json::Value::operator=(Json::Value)' 
collect2: error: ld returned 1 exit status 

Что случилось с моим кодом ?

+0

Какую версию jsoncpp вы используете? Возможно, это связано с этой проблемой: https://github.com/open-source-parsers/jsoncpp/issues/484? –

+0

Я не могу проверить версию. Но я загрузил сегодня через github. Я прочитал вопрос, который вы приложили, но я не очень хорошо его понял. Не могли бы вы мне помочь? –

+0

Версия 1.7.2 –

ответ

0

Я не уверен в ошибке ссылки, но есть проблема с кодом, который может быть обработан по-разному в вашем компиляторе. Для меня это ошибка времени выполнения.

Json::Value root; 
root.append("Type"); // makes root into arrayValue 
root["Type"] = Type; // accesses root as an objectValue 
// triggers assert in Json::Value::resolveReference 

это, как я это делаю:

Json::Value root; 
root["Type"] = Type; 
+0

Отлично! он работает спасибо человеку !! –

 Смежные вопросы

  • Нет связанных вопросов^_^