Qt, "undefined reference to `vtable for ..."
C++의 에러 메시지는 명확하지 못한 점이 어렵다.

다음은 오늘 분석할 에러다.
...
/home/x/devel/nateon/branches/rev141_httpproxy/nateon/network/nomhttpproxy.cpp:31: undefined reference to `vtable for NOMHTTPProxy'
/home/x/devel/nateon/branches/rev141_httpproxy/nateon/network/nomhttpproxy.cpp:31: undefined reference to `vtable for NOMHTTPProxy'
CMakeFiles/knateon.dir/network/nomhttpproxy.o: In function `NOMHTTPProxy':
/home/x/devel/nateon/branches/rev141_httpproxy/nateon/network/nomhttpproxy.cpp:27: undefined reference to `vtable for NOMHTTPProxy'
/home/x/devel/nateon/branches/rev141_httpproxy/nateon/network/nomhttpproxy.cpp:27: undefined reference to `vtable for NOMHTTPProxy'
...

Qt로 컴파일 중 다음과 같은 문제를 만나면,
우선 Q_OBJECT 매크로의 문제가 아닐까? 의심을 해보자.

헤더에 Q_OBJECT를 선언하면 "[파일이름].moc"을 필요로 한다.
그런데 signal과 slot이 선언되지 않으면 .moc 파일이 생성 안 되기도 한다.

nomhttpproxy.h
class NOMHTTPProxy : public QObject
{
Q_OBJECT
public:
NOMHTTPProxy();
~NOMHTTPProxy();
};


nomhttpproxy.cpp
#include "nomhttpproxy.h"

NOMHTTPProxy::NOMHTTPProxy()
: QObject()
{
}

NOMHTTPProxy::~ NOMHTTPProxy()
{
}

// #include "nomhttpproxy.moc"


nomhttpproxy.moc 이 생성되어야 에러가 나지 안는데 signal, slot이 정의되지 않으면
nomhttpproxy.moc이 생성되지 않는다.
.../home/x/devel/nateon/branches/rev141_httpproxy/nateon/network/nomhttpproxy.cpp:35:28: error: nomhttpproxy.moc: No such file or directory
...

그래서 nomhttpproxy.cpp에서 nomhttpproxy.moc 부분을 주석 처리하고
컴파일하면 처음 보여준 에러가 나는 것이다.

그럼, 이 경우에는 QObject를 쓸 이유가 없다.
signal과 slot을 사용할 게 아니면 QObject를 상속받지 말고 그냥 클래스를 만드는 게 좋겠다.

일반 C++ 에서 이와 비슷한 경우로
매크로가 메타파일을 생성해서 vtable을 생성할 때 발생할 수 있는 에러라고 의심해 볼 수 있을것이다.

- 끝 -
by 개미 | 2008/02/28 17:39 | 리눅스 | 트랙백(3) | 덧글(1)
트랙백 주소 : http://lum7671.egloos.com/tb/3639258
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from PrograMMeR o.. at 2011/03/30 21:08

제목 : QT debugging
Qt, "undefined reference to `vtable for ..." moc 파일,,QT에서 컴파일시 자동으로 생성해주는 파일이라,,디버깅이 어렵다....more

Tracked from オークリー レンズ at 2014/07/28 20:00

제목 : ghd hair
の Topdatum 100パーセント絶対に自由に直接ディレクトリ これは、モデルのプライベート転 オークリー レンズ 送です:あなたは、あなたアカウンタビリティ /> 十分 サングラス 人気 に良好な 、考えてみてください,オークリー レンズ。 ""これらのレベルの種類は、多くの場合、現在行われていない - 私は その理由は、あなたは間違いなく、時にはこれらの本のすべてを認識していただきまし は感謝しています,サングラス 人気。 「「私が稼いで、人々が coach 財布 彼らは真剣に責......more

Tracked from coach 意味 免.费.. at 2014/07/29 16:29

제목 : ディオール 財布
style="font-size:14px; coach 意味 "> 更多育儿及孕期知识请关注我的QQ空间: 点击下面网址进入:http://982646070.qzone. サングラス スポーツ qq.com 收听我的微博:http://t.qq.com/yuerbaoku 每日会不间断更新 ,如果大家觉得不错,可以转载一下,让更多父母知道 相信很多妈妈回忆起怀孕时都知道早孕反应是怀孕期间最痛苦的过程。然而,当时却不知 サングラスオークリー 道如何舒缓早孕反应。孕妈妈们如果能知......more

Commented by JesS at 2011/03/30 21:08
좋은 정보 감사드립니다.
※ 로그인 사용자만 덧글을 남길 수 있습니다.
< 이전페이지 다음페이지 >