Rumah > Artikel > pembangunan bahagian belakang > Mengapakah dentang dengan libc dalam mod c 0x gagal memautkan contoh rangsangan::program_options ini?
Menyusun contoh program yang melibatkan rangsangan::program_options dengan denting menggunakan libc dan mod c 0x menghasilkan ralat simbol yang tidak ditentukan. Walau bagaimanapun, kod yang sama menyusun dan memaut dengan jayanya menggunakan g -mp-4.7 atau clang tanpa libc .
Isu timbul daripada ketidakserasian boost::program_options, yang dibina menggunakan libstdc , dengan libc . Untuk mengelakkan pencampuran tidak sengaja perpustakaan standard yang tidak serasi dan memastikan keserasian binari, libc menggunakan ciri C 11 yang dipanggil "ruang nama sebaris." Ini menukar Antara Muka Perduaan Aplikasi (ABI) std::string tanpa menjejaskan Antara Muka Pengaturcaraan Aplikasi (API).
Untuk menyelesaikan isu keserasian ini, bina semula rangsangan menggunakan denting dengan -stdlib=libc flag:
clang++ -stdlib=libc++
Tindakan ini akan membina semula rangsangan dengan libc dan mengelakkan konflik simbol yang timbul daripada menggunakan perpustakaan standard yang tidak serasi.
Atas ialah kandungan terperinci Mengapakah dentang dengan libc dalam mod c 0x gagal memautkan contoh rangsangan::program_options ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!