Rumah > pembangunan bahagian belakang > C++ > Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?

Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?

Barbara Streisand
Lepaskan: 2024-11-03 01:46:03
asal
967 orang telah melayarinya

Why Does Clang with libc   in C  0x Mode Fail to Link Boost::Program_Options?

Mengapa berdenting dengan libc dalam Mod C 0x Gagal Pautan Boost::Program_Options Contoh

Coretan yang diberikan menunjukkan isu semasa cuba menyusun dan boost link::program_options dengan clang menggunakan libc dalam mod C 0x.

Analisis Masalah

Ralat penyusunan berpunca daripada ketidakserasian antara libc dan libstdc , standard lalai perpustakaan dilaksanakan oleh g . libc menggunakan butiran pelaksanaan yang berbeza untuk std::string, memperkenalkan perbezaan ABI (Antara Muka Binari Aplikasi) daripada libstdc .

Penyelesaian

Untuk menyelesaikan isu ini, adalah perlu untuk membina semula Boost menggunakan clang dengan bendera -stdlib=libc. Ini memastikan bahawa pustaka Boost disusun terhadap pustaka standard yang sama dengan pustaka boleh laku yang dipautkan. Ia menyelaraskan ABI std::string merentas perpustakaan Boost dan program yang sedang disusun.

Penjelasan Teknikal

libc memanfaatkan ruang nama sebaris untuk mengubah ABI std: : string tanpa mengubah suai APInya. Ini mewujudkan percanggahan yang dirasakan antara kedua-dua perpustakaan, di mana std::string daripada libstdc dan std::__1::string daripada libc dianggap sebagai struktur data yang berbeza oleh pemaut.

Dengan membina semula Boost dengan standard yang sesuai perpustakaan, definisi simbol untuk boost::program_options sepadan dengan yang diharapkan oleh pemaut, membolehkan pemautan berjaya.

Atas ialah kandungan terperinci Mengapa Clang dengan libc dalam Mod C 0x Gagal Menghubungkan Boost::Program_Options?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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