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

  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • steeletraining

    steeletraini

    28 NİSAN 2010
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006