Mengapa saya mendapat ralat \'\'rujukan tidak ditentukan kepada vtable\'\' apabila menggunakan Q_OBJECT?

Linda Hamilton
Lepaskan: 2024-10-27 07:30:03
asal
271 orang telah melayarinya

Why am I getting an

Ralat 'undefined reference to vtable' semasa Menggunakan Q_OBJECT

Ralat "'undefined reference to vtable'" berlaku apabila pemaut tidak dapat mencari jadual fungsi maya (vtable) untuk kelas yang mewarisi daripada QObject dan mengisytiharkan makro Q_OBJECT. Ralat ini boleh timbul atas beberapa sebab.

Punca Berkemungkinan:

  • Unit MOC Hilang: MOC (Penyusun Objek Meta) menjana fail unit berasingan yang mengandungi pelaksanaan fungsi berkaitan QObject. Pastikan unit yang dijana oleh MOC disertakan dalam proses pemautan.
  • Pengisytiharan Kelas dalam Fail Pelaksanaan: Letakkan pengisytiharan kelas dalam fail pengepala berasingan dan bukannya fail pelaksanaan. Sistem binaan mungkin tidak mengimbas fail pelaksanaan untuk pemprosesan MOC.
  • Invokasi qmake yang tiada: Qmake menjana peraturan binaan yang diperlukan untuk MOC. Jika kelas pada mulanya tidak tergolong dalam sistem meta-objek Qt, jalankan qmake sekali lagi untuk mengemas kini cap masanya dan mencetuskan pelaksanaannya.

Penyelesaian:

Untuk menyelesaikan isu ini, ikut langkah berikut:

  1. Alihkan pengisytiharan kelas ke fail pengepala yang berasingan.
  2. Jalankan "Jalankan qmake" daripada menu konteks projek dalam Qt Creator atau secara manual kemas kini cap masa fail projek untuk memaksa qmake invocation.
  3. Pastikan unit MOC yang dijana disertakan dalam proses pemautan.

Langkah-langkah ini harus menghapuskan ralat 'rujukan tidak ditentukan kepada vtable' dan benarkan kod anda berjaya disusun.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat \'\'rujukan tidak ditentukan kepada vtable\'\' apabila menggunakan Q_OBJECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!