使用QJson库

Sin*_*all -1 c++ qt static-libraries qjson

我知道这是一个愚蠢的问题,但仍然存在.

我想在我的项目中使用QJson库.我从官方网站下载了tarball(可能需要提一下我是64位Ubuntu 12.04).该INSTALL文件有以下说明

  mkdir build
  cd build
  cmake -DCMAKE_INSTALL_PREFIX=_preferred_path_ ..
  make
  make install
  /sbin/ldconfig, if necessary
Run Code Online (Sandbox Code Playgroud)

正是我遵循的.我已经得到了/include,/libshareQJson的文件夹添加到我的/usr/local.

之后,我打开我的IDE(这是QtCreator),并使用以下简单代码创建一个测试项目:

#include <QVariant>
#include <qjson/serializer.h>

int main(int argc, char *argv[])
{
    QJson::Serializer s;
    QVariantMap map;
    map["hello"] = QVariantList() <<"t1"<<"t2";
    QByteArray json = s.serialize(map);
}
Run Code Online (Sandbox Code Playgroud)

#include被处理的很好,所有的类型都认可,自动完成对QJson类工作正常.但是,在尝试编译时,我得到了这个(删除了完整路径以提高可读性):

<...>/QJsonTest/main.cpp:15: undefined reference to `QJson::Serializer::Serializer()'
<...>/QJsonTest/main.cpp:18: undefined reference to `QJson::Serializer::serialize(QVariant const&)'
<...>/QJsonTest/main.cpp:18: undefined reference to `QJson::Serializer::~Serializer()'
<...>/QJsonTest/main.cpp:18: undefined reference to `QJson::Serializer::~Serializer()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

是什么原因,我该如何使其发挥作用?

YeP*_*IcK 5

您正在遇到链接器(而不是编译器)错误.您需要使用-L选项将路径添加到QJson库文件中