Portál AbcLinuxu, 8. května 2025 00:11

Dotaz: undefined reference to vtable

27.2.2010 21:37 Onegin
undefined reference to vtable
Přečteno: 1525×
Odpovědět | Admin
V kdevelop som zalozil projekt z templatu C++/qt(cmake) a skusam podla tutorialu skompilovat kod z prvej kapitoly. Na riadkoch s Q_OBJECT makrom a konstruktorom dostavam error: undefined reference to vtable. Nasiel som k tomu nieco tu ale ja ziadny subor .pro nemam.

Vopred vdaka za akukolvek pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.2.2010 00:06 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: undefined reference to vtable
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vtable se dava do stejneho modulu jako prvni neinlineovana clenska metoda. Protoze jste tu metodu nejspis neimplementoval, tak Vam chybi i vtable.
28.2.2010 00:30 Onegin
Rozbalit Rozbalit vše Re: undefined reference to vtable
Trieda addressbook ma povodne implementovany iba konstruktor ale aj ked pridam metodu, ktora nie je inline dostavam rovnaky vysledok.
28.2.2010 00:37 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: undefined reference to vtable
V tom pripade jste neco zapomnel linkovat. Najdete si, v jakem souboru se ten symbol nachazi (nm nebo objdump) a presvecte se, ze ho linkujete.
28.2.2010 13:57 Jirka P
Rozbalit Rozbalit vše Re: undefined reference to vtable
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jen takový nástřel - máte .moc od té vaší třídy, a linkujete (nebo includujete) ho do binárky?
28.2.2010 14:32 Onegin
Rozbalit Rozbalit vše Re: undefined reference to vtable
Takto vyzera CMakeLists

project(nazov) cmake_minimum_required(VERSION 2.6) find_package(Qt4 REQUIRED)

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})

set(nazov_SRCS nazov.cpp main.cpp) qt4_automoc(${nazov_SRCS}) add_executable(nazov ${nazov_SRCS}) target_link_libraries(nazov ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})

a nazov.moc je v priecinku /build/
28.2.2010 15:55 Jirka P
Rozbalit Rozbalit vše Re: undefined reference to vtable
Aha, takže nelinkujete. Pak byste měl mít v nazev.cpp

#include "nazev.moc"
28.2.2010 17:19 Onegin
Rozbalit Rozbalit vše Re: undefined reference to vtable
Vdaka, pomohlo. Ak mozem mat este otazocku, tak na co sluzi ten .moc file.
1.3.2010 10:28 Jirka P
Rozbalit Rozbalit vše Re: undefined reference to vtable
Je tam implementace signálů a slotů (metody, které vezmou argumenty, které posíláte se signálem a zabalí je do nějaké struktury, pak metoda, která dělá dispatch slotů) a metody, které zajišťují to jejich RTTI. Některé z nich jsou virtuální a jejich deklaraci vytváří makro Q_OBJECT.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.