viernes, 19 de diciembre de 2008

Qt ERROR: "undefined reference to vtable when Q_OBJECT..."

Este error ocurre puesto que la macro Q_OBJECT no está en un archivo *.h

Los archivos que contienen Q_OBJECT son procesados por moc (Meta-Object Compiler) y éste sólo procesa los archivos header (archivos .h).

Solución


Por tanto, la solución es mover la(s) clase(s) que contiene(n) macros Q_OBJECT a archivos header (*.h) .

4 comentarios:

  1. Greatings,
    Onload of page my antivirus put alert, check pls.

    Have a nice day
    Bodyc

    ResponderEliminar
  2. Buenas, me estoy encontrando con este problema y no soy capaz de solucionarlo... a ver, al meter signals y slots en un objeto que extiende de QObject, me indica que las señales y los slots de esta no se conectan... la cosa viene al añadir el Q_OBJECT en el .h de mi clase, me salta el error undefined reference to `vtable for Clase'. He comprobado el .pro, y en la seccion HEADER=... aparece mi fichero de cabecera referenciado.

    Saludos y gracias de antemano!

    ResponderEliminar
  3. Y ya hiciste esto?:
    >>>>la solución es mover la(s) clase(s) que contiene(n) macros Q_OBJECT a >>>>archivos header (*.h) .

    y su codigo fuente por supuesto a sus cpp. Es decir, cada clase que contengan Q_OBJECT deben estar en librerias independientes (su propia cabecera y su propio cpp).

    Saludos

    ResponderEliminar