GNU/Linux >> Belajar Linux >  >> Linux

dynamic_cast gagal saat digunakan dengan dlopen/dlsym

Saya menemukan jawaban atas pertanyaan saya di sini. Seperti yang saya pahami, saya perlu membuat typeinfo tersedia di 'testc' tersedia untuk perpustakaan 'testd'. Untuk melakukannya saat menggunakan dlopen() , dua hal tambahan perlu dilakukan:

  • Saat menautkan pustaka, berikan -E kepada penaut opsi, untuk memastikannya mengekspor semua simbol ke yang dapat dieksekusi, bukan hanya yang tidak terselesaikan di dalamnya (karena tidak ada)
  • Saat memuat pustaka dengan dlopen() , tambahkan RTLD_GLOBAL opsi, untuk memastikan simbol diekspor oleh testc juga tersedia untuk testd

Secara umum, gcc tidak mendukung RTTI lintas batas dlopen. Saya memiliki pengalaman pribadi dengan percobaan/penangkapan yang mengacaukan ini, tetapi masalah Anda sepertinya kurang lebih sama. Sayangnya, saya khawatir Anda harus tetap berpegang pada hal-hal sederhana di seluruh dlopen.


Linux
  1. Jungledisk Gagal Dengan Kesalahan Libnotify?

  2. Tautkan dengan libstdc++ versi lama

  3. Apa pentingnya caddr_t dan kapan digunakan?

  1. Kesalahan saat menggunakan pembantu kredensial Git dengan gnome-keyring sebagai Sudo

  2. Ubuntu buat-reaksi-aplikasi gagal dengan izin ditolak

  3. Bagaimana cara mendapatkan file dengan nama yang benar saat dialihkan?

  1. Periksa ruang disk yang digunakan di Linux dengan du

  2. sudo tanpa kata sandi saat masuk dengan kunci pribadi SSH

  3. Menyetel afinitas proses yang berjalan dengan kumpulan tugas gagal