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()
, tambahkanRTLD_GLOBAL
opsi, untuk memastikan simbol diekspor olehtestc
juga tersedia untuktestd
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.
a.out diganti dengan format file ELF?
Dalam konteks PHP/Apache/Linux, mengapa sebenarnya chmod 777 berbahaya?