Talk:Development/Tutorials/Saving and loading

Page contents not supported in other languages.
From KDE TechBase

Compiling failed due to 'undefined reference to vtable ...'

When compiling, cmake failed during the linking process. undefined reference to `vtable for MainWindow'

I received this error, after making one tiny mistake: I named my headerfile mainwindow.hpp instead of mainwindow.h Once renamed, everything should work fine.

Tiny hint: if you quickly want to copy the source displayed in this tutorial, but are as annoyed as I am about the line numbering which is copied as well, use the edit function of this site to access the (barebone) sourcecode.

I just tested this with Konq, Firefox and Opera and none of them copied the line numbering. What browser are you using? --milliams 15:00, 22 March 2008 (CET)

Solution for "undefined reference to `vtable for MainWindow'"

When I tried to compile the code, I got the same error:

undefined reference to `vtable for MainWindow'

This is because you have to change CMakeLists.txt in order to generate .moc files. Just add this line:

qt4_automoc(${tutorial4_SRCS})

Then you also have to add this line at the bottom of mainwindow.cpp:

#include "mainwindow.moc"

This fixed the problem for me. Please try this and post your results so I can correct the tutorial.

You shouldn't need to use qt4_automoc() at all. With the code copied verbatim from the tutorial it builds just fine. The kde4_add_executable() does all that magic itself. According to Thiago, "If kde4automoc [which is called by kde4_add_executable() I believe] finds a header with Q_OBJECT whose .moc isn't included anywhere, it'll include that from a .cpp" --milliams 16:02, 14 April 2008 (CEST)
Thank you very much. I used the KDevelop cmake template to create my project and the CMakeLists.txt used add_executable() instead of kde4_add_executable(). Problem solved :-) --Simon Schweiger 18:18, 14 April 2008 (CEST)