使用JsonCpp创建Json消息

时间:2016-06-13 13:11:23

标签: c++ json jsoncpp

我正在尝试使用Jsoncpp创建Json消息。 我做了如下:

#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

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

我不确定链接错误,但是在编译器中可能会以不同方式处理的代码存在问题。这对我来说是一个运行时错误。

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;