Bagaimana untuk Menyelesaikan Ralat \'Rujukan Tidak Ditakrifkan kepada\' Apabila Memautkan Perpustakaan Statik C dengan Kod C?

Mary-Kate Olsen
Lepaskan: 2024-10-23 14:53:32
asal
205 orang telah melayarinya

How to Resolve

rujukan tidak jelas kepada Ralat dalam Memautkan Perpustakaan Statik C dengan Kod C

Apabila cuba memautkan perpustakaan C statik dengan kod C, anda boleh menghadapi ralat "rujukan tidak ditentukan", walaupun mengubah susunan pautan. Isu ini timbul daripada nama simbol yang berbeza yang dicipta oleh kompilasi C dan C yang dikenali sebagai 'name mangling'.

Dalam C , pemaut memaparkan nama simbol demangled dalam mesej ralat, yang boleh mengelirukan. Memeriksa fail objek (*.o) dengan "nm -u" mendedahkan bahawa nama simbol yang dirujuk tidak sepadan dengan nama dalam pustaka.

Untuk menyelesaikan isu ini, fungsi dipautkan sebagai luaran yang disusun menggunakan Pengkompil C mesti mempunyai pengisytiharan fungsinya yang disertakan dalam blok "C" {}" luaran. Ini menindas nama C mencampurkan semua dalam blok.

Contohnya:

<code class="cpp">extern "C" {
    #include <dual/xalloc.h>
    #include <dual/xmalloc.h>
}</code>
Salin selepas log masuk

Sebagai alternatif, anda boleh membungkus pengisytiharan fungsi dalam fail pengepala seperti berikut:

<code class="cpp">#if defined (__cplusplus)
extern "C" {
#endif

/*
 * Put plain C function declarations here ...
 */

#if defined (__cplusplus)
}
#endif</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!