Обновление общей библиотеки

#dll #linker #dylib #shared-libraries

#dll #компоновщик #dylib #общие библиотеки

Вопрос:

Мое приложение разделено на 4 основные части:

  1. основное приложение (действует как клей для других частей — загружает плагины, имеет связанные библиотеки ядра и пользовательского интерфейса)
  2. ядро (общая библиотека с классами и т. Д., Это будет даже что-то вроде sdk, в основном содержит все, кроме вещей, связанных с пользовательским интерфейсом)
  3. пользовательский интерфейс (общая библиотека, которая содержит ресурсы пользовательского интерфейса, типы и т.д.)
  4. другие плагины (общие библиотеки, загружаемые основным приложением, которое будет использовать менеджер плагинов из ядра

Основная причина этого заключается в том, что я хочу иметь возможность заменить все части приложения, просто загрузив плагины для моего приложения (через окно менеджера плагинов в этом приложении).

Допустим, я хочу изменить внешний вид своего приложения. В этом случае я должен просто выпустить новую версию общей библиотеки / плагина пользовательского интерфейса.

Я не уверен, будет ли это работать, если эта общая библиотека пользовательского интерфейса связана с моим приложением компоновщиком при компиляции приложения (ядро и пользовательский интерфейс связаны компоновщиком, другие общие библиотеки / плагины загружаются менеджером плагинов при запуске приложения).

Вопрос: Вероятно, в конечном исполняемом файле будут сохранены некоторые метаданные об этих библиотеках, например, размер?? Так что я, вероятно, не могу просто заменить общую библиотеку пользовательского интерфейса, без необходимости снова компилировать и связывать мое приложение?

Ответ №1:

Вообще говоря, вы можете заменить разделяемую библиотеку другой версией разделяемой библиотеки в дистрибутиве (без перекомпиляции исполняемого файла и т. Д.) В случае, Если исходная библиотека и замененная библиотека имеют одинаковый ABI