Bagikan melalui


Variabel atau Isi Fungsi Hilang

Hanya dengan prototipe fungsi, pengkompilasi dapat dilanjutkan tanpa kesalahan, tetapi linker tidak dapat menyelesaikan panggilan ke alamat karena tidak ada kode fungsi atau ruang variabel yang dicadangkan. Anda tidak akan melihat kesalahan ini sampai Anda membuat panggilan ke fungsi yang harus diselesaikan oleh linker.

Contoh: Memanggil ke fungsi yang tidak ditentukan

Panggilan fungsi dalam utama akan menyebabkan LNK2019 karena prototipe memungkinkan pengkompilasi berpikir fungsi ada. Linker menemukan bahwa itu tidak.

// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
   DoSomething();
}

Contoh: Memanggil ke fungsi yang diimplementasikan

Di C++, pastikan Anda menyertakan implementasi fungsi tertentu untuk kelas dan bukan hanya prototipe dalam definisi kelas. Jika Anda mendefinisikan kelas di luar file header, pastikan untuk menyertakan nama kelas sebelum fungsi (Classname::memberfunction).

// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
   static void Test();
};

// Should be void A::Test() {}
void Test() {}

int main() {
   A AObject;
   AObject.Test();
}

Lihat juga

LNK2019 Kesalahan Alat Linker