Dalam video ini, kita akan membahas tentang kesalahan linker dan mengapa hal itu bisa terjadi.
Kesalahan linker terjadi ketika linker mencoba menyatukan semua bagian program untuk membuat
eksekusi dan ada satu atau beberapa bagian yang hilang.
Biasanya, hal ini dapat terjadi ketika file objek atau pustaka tidak dapat ditemukan oleh linker.
Memperbaiki kesalahan linker bisa jadi rumit.
Kadang-kadang, ini hanya masalah mendapatkan jalur yang benar sehingga penghubung tahu di mana
bagian yang hilang.
Mari kita buka code light dan kita akan memaksa sebuah program untuk mengalami kesalahan linker sehingga Anda dapat melihat
seperti apa pesan kesalahannya.
Contoh kode di sini, silakan abaikan sintaksnya.
Ini sebenarnya adalah kode C plus plus, tetapi masih relevan dengan kesalahan linker.
Jangan khawatir tentang i o stream.
Jangan khawatir tentang stdcout.
Gagasan utama di sini adalah bahwa kesalahan tautan adalah sama di C dan C plus plus.
Dan contoh pengkodean di sini hanya mencoba mendemonstrasikan lagi kesalahan linker.
Jadi saya menggunakan code light dan saya telah membuat sebuah proyek bernama Linker Error berdasarkan template yang kita gunakan.
Jadi yang saya miliki hanyalah Main. cpp yang bertuliskan Hello world.
Sekarang kita akan memaksakan kesalahan linker di sini.
Ini bukan sesuatu yang biasa Anda lakukan, tetapi saya ingin menunjukkan kepada Anda, seperti apa kesalahannya.
Jadi apa yang akan saya katakan adalah saya akan mengatakan extern int c atau katakan saja X dan saya akan menjelaskan semua ini
kepada Anda sebentar lagi.
Dan kemudian di bagian tubuh utama, saya ingin mencoba menggunakan X di sana.
Ini hanya bilangan bulat dan katakanlah saya ingin mencetaknya.
Saya hanya ingin mencetak X, sesederhana itu.
Saya akan menyimpan ini.
Sekarang Anda akan melihat jika saya mengkompilasi program ini, Anda akan melihat apa yang terjadi.
Saya akan klik kanan kompilasi.
Saya mendapatkan kompilasi yang bersih.
Tidak ada yang salah dengan program ini, tetapi ketika saya mencoba membangun dan menjalankannya.
Anda dapat melihat kesalahan linker.
Ini adalah kesalahan linker klasik.
Referensi yang tidak terdefinisi untuk sesuatu.
Dalam kasus ini, kebetulan saja x adalah x.
Juga, Anda akan melihat bahwa linker mengembalikannya di sini.
LD mengembalikan satu yang merupakan status keluar.
Jadi, ada yang salah dengan tautan tersebut.
Jelas kompilernya baik-baik saja karena kami tidak mendapati adanya kesalahan kompiler.
Kami melakukannya lagi.
Itu dia kompilasi.
Tidak ada kesalahan, tidak ada peringatan.
Jadi, izinkan saya menjelaskan kepada Anda apa yang terjadi di sini.
Biar saya ambil stylus saya di sini dengan cepat.
Dan apa yang terjadi di sini adalah saya memiliki file CPP utama saya di sini dan itu akan dikompilasi ke titik nol utama, katakanlah,
atau objek titik utama.
Di sini kita memiliki referensi ke sebuah EXE.
Anda bisa melihatnya di sana.
Jadi di sini saya punya referensi ke sebuah exe, yang akan saya gunakan.
Sekarang kita juga memiliki pustaka O stream, jadi linker perlu mengambil pustaka tersebut dan saya akan mengetikkan i o
stream di sini agar Anda tahu apa yang saya maksud.
Penghubung perlu menggabungkan keduanya untuk membuat exe utama saya.
Atau dalam kasus ini saya yakin itu adalah kesalahan linker exe.
Tapi Anda tahu apa yang saya maksud.
Jadi, kompilasi tidak masalah.
Kita telah membuat file objek kita.
Perpustakaan ini ada.
Masalahnya adalah saya telah memberi tahu penyusun di sini bahwa x ini tidak ada dalam diri saya.
Itu ada di tempat lain.
Ini ditentukan oleh orang lain.
Tentu saja, hal ini tidak ditentukan oleh orang lain karena hal itu seperti memaksakan masalah di sini.
Jadi sekarang linker perlu menyelesaikan X tersebut, Ia mengatakan, oke, dari mana saya mendapatkan nilai itu untuk dicetak?
Karena itulah yang Anda minta saya lakukan di sini, bukan?
Saya ingin mencetak nilai x.
Di mana di mana x?
Ia tidak dapat menemukannya.
Itu adalah kesalahan linker.
Itulah yang sebenarnya terjadi.
Dan biarkan saya membuat ini lagi sehingga Anda dapat melihat pesan kesalahan sekali lagi.
Ini adalah membangun dan menjalankannya.
Dan ada pesan kesalahan.
Ini mengatakan referensi yang tidak terdefinisi ke X.
Anda dapat melihat dengan tepat apa yang sedang terjadi.
Tidak dapat menemukan X.
Sekarang, ini bukan kesalahan kompiler.
Ini adalah kesalahan linker.
Hal ini sangat penting untuk dipahami.
Kesalahan linker memang sulit untuk diperbaiki.
Sering kali file yang perlu Anda tautkan tidak ada.
Mereka berada di tempat yang salah.
Anda tidak perlu khawatir tentang hal itu dengan menggunakan code light dalam kursus ini, pada dasarnya kita akan melakukan
semuanya sendiri.
Tetapi jika Anda menggunakan pustaka dari pihak ketiga, ini adalah hal yang akan kita bahas dalam kursus yang lebih
menengah atau lanjutan.
Tetapi saya hanya ingin menunjukkan kepada Anda kesalahan linker jika Anda menemukannya, postinglah di forum dan kita
akan mengatasinya bersama-sama.