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

  • engineerguy

    engineerguy

    10 Ocak 2010
  • SaMmM123

    SaMmM123

    3 Mayıs 2006
  • TokShogun

    TokShogun

    6 HAZİRAN 2009