我正在浏览旧的Trolltech Qt教程,因为我发现它们比新的更有帮助,当我到达实现自己的信号的类小部件时,undefined reference to vtable错误袭击了我。
http://doc.trolltech.com/4.0/tutorial-t7.html
为了方便起见,我没有将代码分开,而是将它们都复制到同一个.cpp中。
我仔细查看了一下,发现vtable错误是由未定义的虚函数引起的。但是,除了代码分隔之外,我没有在教程代码中省略任何内容。在lcdrange.h中省略Q_OBJECT宏以及插槽和信号似乎会使项目编译。我认为是lcdrange.h的void valueChanged(int newValue);引起了大惊小怪,但教程没有提供定义。我确信他们不会发布不起作用的代码,所以我一定是做错了什么。如果有什么意义的话,我使用C::B(MinGW)。我也是C++的新手。
发布于 2012-03-15 18:08:12
MOC必须为lcdrange.h生成代码,并且生成的代码必须经过编译和链接。qmake确保在HEADERS变量中列出的所有头文件都是这样的。确保在.pro文件的HEADERS部分中列出了lcdrange.h,然后重新运行qmake。
https://stackoverflow.com/questions/9717483
复制相似问题