我正在尝试使用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
我的代码出了什么问题?
答案 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;