0

我刚刚玩过 qjson 库并得到“未定义的引用”错误。这是代码:

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

class Person: public QObject {

    Q_OBJECT

    Q_PROPERTY(QString name READ name WRITE setName)
    Q_PROPERTY(Gender gender READ gender WRITE setGender)
    Q_ENUMS(Gender)

public:
    Person(QObject *parent = 0);
    ~Person();

    QString name() const;
    void setName(const QString &name);

    enum Gender{Male, Female};
    Gender gender() const;
    void setGender(Gender gender);

private:
    QString m_name;
    Gender m_gender;

};

int main ()
{

    Person person;

    QJson::Serializer serializer;

    person.setName("Nick");
    person.setGender(Person::Male);
    QVariantMap person_map = QJson::QObjectHelper::qobject2qvariant(&person);

    QByteArray json = serializer.serialize(person_map);
    return 0;
}

所以,编译器说这个以及Personundefined reference to Person::Person中的所有其他函数。为什么?

4

2 回答 2

4

您只声明了类的方法。您还需要定义(即实施)它们。目前,编译器应该如何知道构造函数Person应该做什么?

于 2010-09-15T13:06:51.767 回答
0

您需要链接实现类 Person 的库或目标文件。

如果你有一个 Unix 变体上的 libqjson.a 文件,你需要将 -lqjson 添加到你的链接命令行。如果您在 Windows 上使用 qjson.lib,则需要与 qjson.lib 链接。如果您有一个实现 Person 的 .cpp 文件,则需要对其进行编译并将其与可执行文件链接。

于 2010-09-15T13:09:00.720 回答