Ошибка «undefined reference to vtable» при использовании MOC в Qt возникает, когда компилятор метаобъектов (MOC) не генерирует необходимый код метаобъектов для класса, который использует макрос Q_OBJECT. boldena.com
Некоторые возможные причины проблемы:
- Неправильное включение файлов кода в проект. boldena.com Нужно убедиться, что в конфигурацию проекта включены как заголовочные (например, AddressBook.h), так и исходные (например, AddressBook.cpp) файлы. boldena.com
- Отсутствие файла перевода (.cpp), который реализует хотя бы одну невстроенную функцию-член специально для этого класса. cplusplus.com Компилятору нужен такой файл, чтобы определить, в какой объектный файл нужно поместить vtable и другую служебную информацию, относящуюся к классу. cplusplus.com
- Не реализован деструктор. forums.codeblocks.org Иногда ошибка возникает из-за того, что деструктор объявлен, но не определён. forums.codeblocks.org
Для решения проблемы можно попробовать запустить MOC вручную, например, с помощью команды qmake из меню QtCreator, а затем перестроить проект. qtcentre.org