Apabila cuba memautkan perpustakaan C statik dengan kod C, ia adalah perkara biasa untuk menemui " rujukan tidak ditentukan kepada" ralat. Ralat ini timbul walaupun selepas melaraskan susunan fail objek dan memautkan bendera. Walau bagaimanapun, isu ini adalah eksklusif untuk pemautan C, kerana program C lain yang menggunakan perpustakaan yang sama tidak mengalami ralat ini.
Perbezaan utama antara kompilasi C dan C adalah nama yang menggoda. Pengaturcara C boleh bebas menggunakan nama fungsi seperti yang diisytiharkan, manakala C merosakkan nama fungsi, kelas dan templat untuk mengelakkan konflik penamaan apabila menyusun berbilang fail sumber.
Apabila memautkan perpustakaan C statik dengan kod C, pemaut mengharapkan nama simbol yang rosak sebagai rujukan. Walau bagaimanapun, pustaka C menyediakan simbol yang tidak terurus, yang membawa kepada ralat "rujukan yang tidak ditentukan kepada".
Untuk menyelesaikan ralat ini, blok "C" luaran boleh digunakan untuk menyekat C name mangling untuk skop tertentu, melampirkan pengisytiharan fungsi yang berinteraksi dengan perpustakaan C. Dengan berbuat demikian, pemaut akan mengenali rujukan yang tidak dileburkan dan berjaya memautkan pustaka.
Satu lagi pendekatan berkesan ialah membungkus pengisytiharan fungsi dalam fail pengepala dengan arahan prapemproses yang menyusun secara bersyarat berdasarkan sama ada kompilasi adalah C atau C . Pendekatan ini memastikan bahawa nama fungsi yang betul digunakan bergantung pada konteks kompilasi.
Atas ialah kandungan terperinci Mengapakah Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada' Apabila Memautkan Perpustakaan Statik C dengan Kod C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!