C ++: dlclose не выгружает разделяемую библиотеку

У меня есть общая библиотека, загруженная с помощьюdlopen (с флагамиRTLD_NOW | RTLD_GLOBAL ). Если эта библиотека использует функции из основной программы, то она не выгружается. Таким образом, я получаю тот же код для этой общей библиотеки, даже если я выгружен (используяdlclose), изменил, скомпилировал, (пере) загрузил.

Моя цель - перезагрузить ту же библиотеку после внесения в нее изменений, чтобы мне не пришлось перезапускать всю программу, чтобы протестировать мой код.

Я использую g ++ 4.2.3, в Linux Ubuntu 10.04.

(редактировать)

решил:

msgstr "загруженная библиотека использует символ из-за RTLD_GLOBAL". Действительно, у меня были вставлены символы другого .a при связывании, которые, вероятно, были отозваны и препятствовали закрытию моей библиотеки ... Я думаю, что можно проверить, что библиотека выгружена с использованием dlopen (..., RTLD_NOLOAD), чтобы проверить библиотеку выгружен правильно.

Ответы на вопрос(1)

Ваш ответ на вопрос