Перейти к содержанию

Помогите разобраться с динамическими библиотеками


Рекомендуемые сообщения

Интересуют возможности по загрузке/выгрузке динамических библиотек во время выполнения.

У сервера есть подключаемые службы. Каждая служба в своей динамической библиотеке. При работе во время выполнения загружаются необходимые библиотеки, создаются объекты служб (по одному на библиотеку). В библиотеках есть синглтоны (общие данные), от них не избавиться.

Хочется иметь возможность на лету заменять функциональность библиотек. Т.е. отправлять на сервер новую версию библиотеки и делать "подмену". Но тут есть два варианта.

1. Сначала полностью выгружать старую версию, потом загружать новую.

2. Сначала загружать новую, делать "быструю подмену", потом выгружать старую.

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

Я ещё не пробовал, интересно будет ли работать. Я предполагаю, что первый вариант работать будет, а вот со вторым возникнут проблемы из-за общих данных.

Также хочется загрузить два объекта одной и той-же службы, но чтобы общие данные у каждой службы били свои. Тут что-нибудь можно сделать? Может можно загрузить две библиотеки? Делать можно всё что угодно, вносить изменения в код, переименовывать файлы библиотек и т.п.

Если есть литература, буду благодарен.

Ссылка на комментарий
Поделиться на другие сайты

Если окружить всю библиотеку полностью в безымянное пространство имен, кроме одной внешней функции, общие данные не будут больше перекрываться?

Что можно про безымянный namespace в динамической библиотеке сказать?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...