Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' Apabila Memautkan Perpustakaan Statik C ke Kod C?

Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' Apabila Memautkan Perpustakaan Statik C ke Kod C?

Barbara Streisand
Barbara Streisandasal
2024-12-23 01:13:15823semak imbas

Why Do I Get

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn