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

  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • Ownage Pranks

    Ownage Prank

    13 AĞUSTOS 2007
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013