본문 바로가기
Research/Programming

Qt, undefined reference to `vtable for

by sunnyan 2010. 1. 26.
728x90

g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.6.0/lib -o mythstb version.o main.o globalsettings.o action.o actionset.o mythcontrols.o keybindings.o keygrabber.o livemgrwnd.o chansearch.o channellist.o banner.o setup-language.o setup-avoutput.o svcmgrthread.o moc_mythcontrols.o moc_keygrabber.o moc_livemgrwnd.o moc_chansearch.o moc_channellist.o moc_banner.o moc_setup-language.o moc_setup-avoutput.o    -L/usr/local/Trolltech/Qt-4.6.0/lib -L../../libs/libmyth -L../../libs/libmythdb -L../../libs/libmythui -lmythstb-0.1 -lmythstbui-0.1 -lmythstbdb-0.1 -lfreetype -L/usr/X11R6/lib -lXinerama -lX11 -lXext -lXxf86vm -lXv -lXrandr -L/usr/local/lib -lQtWebKit -L/usr/local/Trolltech/Qt-4.6.0/lib -lQtXmlPatterns -lQtSql -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
svcmgrthread.o: In function `ServiceManager':
/work/whs1000-mythstb/programs/mythstb/svcmgrthread.cpp:30: undefined reference to `vtable for ServiceManager'
collect2: ld returned 1 exit status
make[2]: *** [mythstb] 오류 1


컴파일 도중 위와 같은 에러를 만났다. 겉으로 보기에는 아무런 문제가 없어 보인다...


결국 Q_OBJECT 문제임을 알았다.


즉, 헤더에 Q_OBJECT가 선언되면 *.moc 파일을 필요로 하는데, 슬롯과 시그널이 선언되지 않으면 *.moc파일이 안생긴다고 함.


따라서, Q_OBJECT를 선언하지 말거나, 슬롯/시그널을 선언해야 위의 에러를 없앨 수 있다.

728x90

'Research > Programming' 카테고리의 다른 글

Worker Thread in Qt using Signals & Slots  (0) 2011.04.12
An Introduction to SQLite  (0) 2010.02.01
Makefile: 변수 출력하기  (0) 2009.12.14
[SQLITE] INSERT  (0) 2009.11.18
gcc 이야기  (0) 2009.07.22