我知道这是一个愚蠢的问题,但仍然存在。
我想在我的项目中使用QJson库。我从官方网站下载了tarball(可能需要提一下我是64位Ubuntu 12.04)。 INSTALL 文件具有以下说明
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=_preferred_path_ ..
make
make install
/sbin/ldconfig, if necessary
我完全遵循了。我已将QJson的/include
,/lib
和share
个文件夹添加到我的/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);
}
#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
原因是什么,以及如何使其发挥作用?
答案 0 :(得分:5)
您正在遇到链接器(而不是编译器)错误。您需要使用-L
选项