Rumah > Artikel > pembangunan bahagian belakang > Ralat C++: masalah luaran yang tidak dapat diselesaikan berlaku, bagaimana untuk mengubah suainya?
Dalam proses menggunakan bahasa pengaturcaraan C++, anda mungkin menghadapi beberapa mesej ralat. Salah satu ralat biasa ialah "Unresolved External", juga dikenali sebagai "link error". Masalah ini biasanya disebabkan oleh definisi beberapa pembolehubah, fungsi, atau objek yang tidak dipautkan dengan betul ke dalam kod sumber. Untuk menyelesaikan masalah ini, tindakan berikut perlu dilakukan.
1. Semak sama ada pembolehubah, fungsi atau objek ditakrifkan dengan betul
Pertama sekali, anda perlu menyemak sama ada semua pembolehubah, fungsi atau objek dalam fail kod telah ditakrifkan dengan betul. Pastikan nama dan jenis mereka sepadan dengan tempat ia dirujuk dalam kod sumber. Juga pastikan bahawa skop pembolehubah, fungsi atau objek adalah betul.
Sebagai contoh, jika pembolehubah ditakrifkan dalam fail .h dan bukan dalam fail .cpp, fail .h mesti disertakan dalam fail .cpp yang menggunakan pembolehubah.
2. Semak sama ada terdapat fail sumber yang hilang
Ada juga sebab biasa untuk "Luar Luar Tidak Selesai" kerana beberapa fail kod sumber hilang. Jika anda menggunakan berbilang fail kod sumber untuk membina projek anda, anda perlu menambah semua fail pada projek itu. Semak sama ada mana-mana fail telah dipadam, dialihkan atau dinamakan semula secara tidak sengaja. Pastikan fail kod sumber disusun dengan betul semasa proses pembinaan projek.
3. Tambahkan fail perpustakaan yang hilang
Kadangkala, anda mungkin perlu menggunakan fail perpustakaan untuk menyokong kod anda. Contohnya, jika anda menggunakan fail pengepala Windows.h, anda perlu menambah fail perpustakaan Kernel32.lib untuk menyokong penggunaan API Windows dalam kod anda.
Untuk menyelesaikan isu ini, anda perlu memastikan bahawa fail perpustakaan tersedia dan telah ditambahkan pada projek dengan betul. Dalam Visual Studio IDE, anda boleh menambah fail perpustakaan dengan membuka sifat projek dan memilih tab Penyambung.
4. Jana semula projek
Jika operasi di atas telah disemak sepenuhnya dan masalah masih wujud, sila cuba jana semula keseluruhan projek. Kadangkala, pautan yang salah berlaku disebabkan masalah dengan fail atau sumber tertentu. Menggunakan Rebuild memastikan projek dibersihkan sepenuhnya dan dibina semula.
Petua lanjutan:
1 Gunakan #pragma sekali atau pelindung fail pengepala
Gunakan #pragma sekali atau pengawal fail pengepala untuk memastikan fail pengepala hanya disertakan sekali. Jika fail kod yang mengandungi fail pengepala dikompilasi beberapa kali, ia mungkin mengakibatkan ralat "Luar Luar Tidak Selesai".
Sila ambil perhatian bahawa dalam beberapa versi pengkompil yang lebih lama, #pragma sekali tidak boleh digunakan, sila gunakan pengawal pengepala.
2. Gunakan include guards
Jika anda menentukan kelas atau struktur anda sendiri, anda perlu menggunakan include guards untuk memastikan fail header hanya disertakan sekali. Ini mengelakkan masalah mentakrifkan kelas atau struct yang sama beberapa kali, mengakibatkan ralat "Luar Luar Tidak Selesai".
3. Gunakan ruang nama
Meletakkan definisi dalam ruang nama yang betul boleh mengelakkan konflik penamaan. Jika dua fail kod sumber berbeza mentakrifkan pembolehubah atau fungsi dengan nama yang sama, pengkompil tidak boleh membezakan antara mereka. Ini mungkin mengakibatkan ralat "Luar Luar Tidak Selesai".
Memasukkan ruang nama yang betul dalam kod anda boleh mengelakkan masalah ini. Menambah arahan atau penentu kelayakan "menggunakan ruang nama" di bahagian atas fail kod sumber anda memastikan fungsi, pembolehubah atau objek yang anda gunakan datang daripada ruang nama yang betul.
Berikut adalah beberapa petua dan kaedah yang boleh membantu anda menyelesaikan masalah "Unresolved External" dalam C++. Perkara utama yang perlu diingat ialah anda perlu menyemak sama ada kod itu ditakrifkan dengan betul, dan kemudian menyemak fail kod sumber atau fail perpustakaan yang hilang. Jika itu masih tidak menyelesaikan masalah, anda boleh mencuba teknik lanjutan untuk mengelakkan konflik penamaan dan definisi pendua.
Atas ialah kandungan terperinci Ralat C++: masalah luaran yang tidak dapat diselesaikan berlaku, bagaimana untuk mengubah suainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!