• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
            這個出錯信息太常見了,用過Qt兩個月以上的朋友基本上都能自己解決了,因為太經典了,可以給新手參考。

            出錯信息一般類似:undefined reference to `vtable for classname MyWidget`
            在執行make命令后出現。

            出錯原因是在定義類的時候為了能使用signals和slot,在類定義的后面加了Q_OBJECT引起。 因為Q_OBJECT是一個宏,在不同的類中展開是不同的代碼,例如在mywidgeth.h中生成的
            public:
            template inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const {
            int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i;
            }
            static const QMetaObject staticMetaObject;
            virtual const QMetaObject *metaObject() const;
            virtual void *qt_metacast(const char *);
            static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); }
            static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); }
            static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); }
            static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); }
            virtual int qt_metacall(QMetaObject::Call, int, void **); private:
            可以看到以上的代碼聲明了3個從父類繼承的3個虛函數。本來這三個函數的實現應該是由moc_mywidget.cpp來完成。
            而當前的錯誤正是因為Makefile里沒有將moc_mywidget.cpp加入編譯引起。

            Makefile背后的原因是qmake,因為Qt的編譯系統是通過qmake將.pro文件轉換成Makefile文件。當qmake掃描.h代碼時發現有Q_OBJECT這樣字眼的代碼時,會將一個用moc生成moc_xxx.cpp代碼的依賴關系寫到Makefile里。如果掃描時沒有找到 Q_OBJECT就不會生成額外的moc_xxx.cpp這樣的文件。

            出現最初一幕的原因是在執行qmake的時候.h代碼里并沒有O_OBJECT這樣的代碼。而執行make的時候.h里已經有Q_OBJECT了,解決的方法就是重新執行qmake,然后執行make.

            本站所有文章由本站和原作者保留一切權力,僅在保留本版權信息、原文鏈接、原文作者的情況下允許轉載,轉載請勿刪改原文內容, 并不得用于商業用途。 謝謝合作。
            原文鏈接:http://www.cuteqt.com/blog/?p=116
            久久精品国产亚洲沈樵| 国产福利电影一区二区三区久久久久成人精品综合 | 久久人人爽人人人人爽AV| 久久99久久99精品免视看动漫| 久久综合给合久久狠狠狠97色69| 久久夜色精品国产亚洲| 热久久视久久精品18| 成人资源影音先锋久久资源网| 久久久久久亚洲精品无码| 无码久久精品国产亚洲Av影片| 国内精品久久久久久久久| 亚洲精品无码专区久久久| 久久国产成人午夜aⅴ影院| 久久精品国产久精国产思思| 亚洲精品97久久中文字幕无码| 久久精品国产91久久综合麻豆自制| 亚洲午夜无码久久久久小说| 国产精品久久久久9999高清| 精品国产乱码久久久久久人妻 | 久久久精品午夜免费不卡| 久久乐国产综合亚洲精品| 久久亚洲欧洲国产综合| 一本大道久久a久久精品综合| 色综合久久综合中文综合网| 久久久这里只有精品加勒比| 色婷婷噜噜久久国产精品12p| 国产精品欧美久久久久天天影视| 国产精品18久久久久久vr | 久久久久综合中文字幕| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久无码中文字幕东京热| 亚洲国产日韩综合久久精品| 久久久久免费视频| 色综合久久夜色精品国产| 伊人久久成人成综合网222| 青青久久精品国产免费看| 亚洲国产成人久久一区WWW| 久久最新免费视频| 国产精品久久婷婷六月丁香| 亚洲色欲久久久综合网东京热| 亚洲精品乱码久久久久66|