Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat \'Q_OBJECT Ralat Memautkan: \'rujukan tidak ditentukan kepada vtable\'\' dalam Aplikasi Qt Saya?

Mengapa Saya Mendapat \'Q_OBJECT Ralat Memautkan: \'rujukan tidak ditentukan kepada vtable\'\' dalam Aplikasi Qt Saya?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 03:51:02357semak imbas

 Why Am I Getting a

Q_OBJECT Ralat Pautan: 'rujukan tidak ditentukan kepada vtable'

Pertimbangkan coretan kod Qt berikut:

<code class="cpp">class T : public QObject, public QGraphicsItem
{
    Q_OBJECT

public:
    T() {}

    QRectF      boundingRect() const {return QRectF();}
    void        paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                      QWidget *widget) {}
};

int main()
{
    T t;
    return 0;
}</code>

Apabila menyusun kod ini, anda mungkin menghadapi ralat pemaut seperti:

undefined reference to `vtable for T'
undefined reference to `vtable for T'
...

Penyelesaian:

Ralat ini biasanya berlaku apabila unit yang dijana MOC untuk kelas anda tidak disertakan dalam proses pemautan. Unit MOC mengandungi maklumat meta tentang kelas, termasuk makro Q_OBJECTnya.

Punca dan Pembetulan Kemungkinan:

  • Fail Pengepala Berasingan: Pastikan pengisytiharan kelas anda berada dalam fail pengepala yang berasingan. Sistem binaan mungkin tidak mengimbas fail pelaksanaan untuk mencari pengisytiharan kelas.
  • Generasi MOC: Sahkan bahawa unit MOC telah dijana. Jalankan qmake sekali lagi untuk memaksa qmake mencipta peraturan MOC yang diperlukan. Jika menggunakan Qt Creator, pilih "Jalankan qmake" daripada menu konteks projek.
  • Q_OBJECT Macro: Sahkan bahawa anda telah menggunakan makro Q_OBJECT dengan betul dalam pengisytiharan kelas anda. Ia harus diletakkan sebelum mana-mana definisi pembina.
  • Warisan: Jika kelas ini sebelum ini tidak tergolong dalam sistem meta-objek Qt (cth., ia tidak mempunyai makro Q_OBJECT atau diwarisi daripada kelas lain ), jalankan semula qmake atau buat perubahan yang tidak ketara pada fail projek anda untuk mencetuskan larian qmake.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Q_OBJECT Ralat Memautkan: \'rujukan tidak ditentukan kepada vtable\'\' dalam Aplikasi Qt Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn