【问题标题】:Bad linking in Qt unit test -- missing the link to the moc file?Qt 单元测试中的错误链接——缺少指向 moc 文件的链接?
【发布时间】:2011-02-02 15:39:42
【问题描述】:

我正在尝试对继承 QObject 的类进行单元测试;该类本身位于我的目录结构中的上一层。当我构建单元测试时,如果找不到类的 MOC 文件,我会得到标准的未解决错误:

test.obj:错误 LNK2001:未解析的外部符号“public:virtual void * __thiscall UnitToTest::qt_metacast(char const *)”(?qt_metacast@UnitToTest@@UAEPAXPBD@Z) + 2 个缺失的功能

已创建 MOC 文件,但似乎没有链接。我已经在 SO、web 和 Qt 的文档中闲逛了很长一段时间,并且碰壁了。

如何让单元测试在链接中包含 MOC 文件?

====

我的项目文件非常简单:

模板 = 应用程序 目标 = 测试 DESTDIR = . 配置 += qtestlib 包含路径 += 。 .. 依赖路径 += 。 标题 += test.h 来源 += test.cpp ../UnitToTest.cpp stubs.cpp 定义 += UNIT_TEST

我的目录结构和文件:

C:。 |单元测试.cpp | UnitToTest.h | \ - -测试 | test.cpp(为清楚起见删除了 Makefile) |测试.h | test.pro |存根.cpp | +---调试 | UnitToTest.obj |测试.obj |测试.pdb | moc_test.cpp | moc_test.obj |存根.obj

编辑:附加信息

生成的Makefile.Debug显示moc文件丢失:

来源 = test.cpp \ ..\测试.cpp \ stubs.cpp 调试\moc_test.cpp 对象 = 调试\test.obj \ 调试\UnitToTest.obj \ 调试\存根.obj \ 调试\moc_test.obj

【问题讨论】:

    标签: unit-testing qt


    【解决方案1】:

    您需要在 pro 文件中将 ../UnitToTest.h 添加到 HEADERS 中。

    【讨论】:

    • 哇。简单得令人讨厌;就像我想的那样。
    • 这可能为我省去了很多挫折。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2023-03-26
    • 2014-05-23
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2011-09-10
    • 2014-10-12
    相关资源
    最近更新 更多