【问题标题】:Qt: Linker error with QVERIFY (Qt Unit Tests)Qt:QVERIFY 的链接器错误(Qt 单元测试)
【发布时间】:2012-08-22 11:18:01
【问题描述】:

基本上我遵循基本示例here。我的.pro 文件包含QT += core network qtestlib。 [已解决] testlib 代替错字 qtestlib

当我包含QVERIFY 时,会出现以下链接器错误:

testwaypointlist.obj:-1: error: LNK2019: unresolved external symbol "bool __cdecl
QTest::qVerify(bool,char const *,char const *,char const *,int)"
(?qVerify@QTest@@YA_N_NPBD11H@Z) referenced in function "private: void __thiscall
TestWaypointList::fillWaypoints(void)" (?fillWaypoints@TestWaypointList@@AAEXXZ)

我错过了链接哪些文件?没有QVERIFY,链接器错误就会消失。

头文件:

#include <QObject>
#include <QtTest/QtTest>
#include "waypointlist.h"

//
// Testing the waypoint list
//
class TestWaypointList : public QObject
{
    Q_OBJECT

private:
    WaypointList _waypointList;
public:
    explicit TestWaypointList(QObject *parent = 0);
private slots:
    void fillWaypoints();
};

cpp:

//
// Fill the waypoint list
//
void TestWaypointList::fillWaypoints()
{
    _waypointList = WaypointList();
    .....

    for (int i=0; i < TESTWPLISTCOUNT; i++) {
        .....
        TestWaypointList::_waypointList.updateOrAppend(id, timeframe);
    }
    QVERIFY(TestWaypointList::_waypointList.count() == 1); // causing the linker error
}

【问题讨论】:

  • 你的 .pro 文件中应该是 QT += testlib,而不是 QT += qtestlib。
  • 就是这样,我误读了这个例子:doc.qt.nokia.com/4.7-snapshot/… 如果你把它写成答案,我很乐意接受。都是我的错:-(

标签: unit-testing qt4 qt-creator


【解决方案1】:

在您的 .pro 文件中,您需要将 QT += qtestlib 更改为 QT += testlib(注意没有“q”)。

值得注意的是,您曾经可以这样做:CONFIG += qtestlib,但根据this page 上的评论,这不再是链接到测试库的推荐方式。

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 2014-08-12
    • 2023-03-26
    • 2011-02-02
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多