SORU
21 Kasım 2008, Cuma


g typeinfo için başvurusu geçersiz

Ben sadece aşağıdaki hatayı (ve Çözümü online, ama Yığın Taşması mevcut değil) koştu:

(.gnu.linkonce.[şeyler]): tanımsız referans [yöntem] [nesne dosya]:(.gnu.linkonce.[şeyler]): tanımsız başvuru `için typeinfo [code]'

Neden bunlardan biri "başvurusu geçersiz" linker hata? typeinfo için alabilirim

(Bonus eğer perde arkasında neler döndüğünü anlatsan puan.)

CEVAP
21 Kasım 2008, Cuma


Olası bir nedeni tanımlamadan sanal bir işlev bildirmek olmasıdır.

Ne zaman bildirmek olmadan tanımlama içinde aynı derleme birimi, sen olabileceğine işaret tanımlı başka bir yerde - bu demektir linker başardı bulmaya bir diğer derleme birimleri (veya kitaplığı).

Sanal işlevi bir örnektir:

virtual void fn() { /* insert code here */ }

Bu durumda linker sonra gidermek gerek yok anlamına gelir bildirimi için bir tanım ekleme.

Hattı

virtual void fn();

bu tanımlamadan fn() beyan ve sorduğun hata iletisini neden olur.

Koda çok benziyor:

extern int i;
int *pi = &i;

tamsayı i zaman (aksi pi adresine ayarlanabilir) bağlantı çözülmesi gereken başka bir derleme biriminde bildirilen Birleşik Devletleri.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • Tina Chen

    Tina Chen

    26 Mayıs 2012
  • UniqueApps

    UniqueApps

    4 Ocak 2009