2010-03-30 90 views
1

我想单元测试一个继承QObject的类;该类本身在我的目录结构中位于一个级别。当我建立了单元测试,我得到了标准的悬而未决的错误,如果一个类的MOC文件无法找到:创建在Qt单元测试中连接不良 - 缺少到moc文件的链接?

 
test.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall UnitToTest::qt_metacast(char const *)" ([email protected]@@[email protected]) 

+ 2 missing functions 

的MOC文件,但似乎不被链接。我一直在围绕着SO,网络和Qt的文档探索一段时间,并且遇到了困难。

如何获得单元测试以将MOC文件包含在链接中?

====

我的项目文件是死的简单:

 
TEMPLATE = app 
TARGET = test 
DESTDIR = . 
CONFIG += qtestlib 
INCLUDEPATH += . .. 
DEPENDPATH += . 
HEADERS += test.h 
SOURCES += test.cpp ../UnitToTest.cpp stubs.cpp 
DEFINES += UNIT_TEST 

我的目录结构和文件:

 
C:. 
| UnitToTest.cpp 
| UnitToTest.h 
| 
\---test 
    | test.cpp  (Makefiles removed for clarity) 
    | test.h 
    | test.pro 
    | stubs.cpp 
    | 
    +---debug 
    |  UnitToTest.obj 
    |  test.obj 
    |  test.pdb 
    |  moc_test.cpp 
    |  moc_test.obj 
    |  stubs.obj 

编辑:信息

一般ated Makefile.Debug显示了MOC文件丢失:

 
SOURCES  = test.cpp \ 
     ..\test.cpp \ 
     stubs.cpp debug\moc_test.cpp 
OBJECTS  = debug\test.obj \ 
     debug\UnitToTest.obj \ 
     debug\stubs.obj \ 
     debug\moc_test.obj 

回答

2

您需要../UnitToTest.h在亲文件添加到头。

+0

哇。令人烦恼的简单;就像我认为的那样。 – dwj 2010-03-30 20:50:37

+0

这可能为我节省了很多挫折。谢谢! – 2014-12-02 12:32:47