Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' Apabila Memautkan Perpustakaan Statik C ke Kod C?
Ralat Rujukan Tidak Ditakrifkan Semasa Memautkan Perpustakaan Statik C dengan Kod C
Apabila memautkan atur cara C dengan perpustakaan C statik, "rujukan tidak ditentukan kepada " ralat boleh berlaku walaupun nama perpustakaan ditentukan dalam arahan memaut. Isu ini timbul disebabkan oleh perbezaan antara proses kompilasi C dan C.
Dalam C , pengkompil melakukan penggubahan nama, yang mengubah simbol fungsi menjadi nama yang hancur dalam fail objek. Walau bagaimanapun, fungsi perpustakaan C tidak mengalami kerosakan nama. Oleh itu, pemaut menghadapi kesukaran untuk memadankan nama fungsi yang rosak dalam fail objek dengan nama fungsi yang tidak hancur dalam pustaka, yang membawa kepada ralat rujukan yang tidak ditentukan.
Penyelesaian
Untuk menyelesaikan isu ini, program C yang memautkan perpustakaan C harus menggunakan blok "C" luaran. Blok ini menyekat penggubahan nama untuk semua pengisytiharan dan takrifan di dalamnya. Dengan melampirkan pengisytiharan fungsi perpustakaan dalam blok "C" luaran, pemaut boleh mengenal pastinya dan menyelesaikan ralat rujukan yang tidak ditentukan.
Sebagai alternatif, fail pengepala yang mengandungi pengisytiharan fungsi perpustakaan boleh dibalut dengan pengisytiharan bersyarat untuk membezakan antara Persekitaran kompilasi C dan C. Untuk kompilasi C, pengisytiharan hendaklah disertakan dalam blok {} "C" luaran. Ini memastikan penindasan nama yang merosakkan untuk fungsi perpustakaan dan membolehkan pemautan berjaya tanpa ralat rujukan yang tidak ditentukan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' Apabila Memautkan Perpustakaan Statik C ke Kod C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!