#dll #linker #dylib #shared-libraries
#dll #компоновщик #dylib #общие библиотеки
Вопрос:
Мое приложение разделено на 4 основные части:
- основное приложение (действует как клей для других частей — загружает плагины, имеет связанные библиотеки ядра и пользовательского интерфейса)
- ядро (общая библиотека с классами и т. Д., Это будет даже что-то вроде sdk, в основном содержит все, кроме вещей, связанных с пользовательским интерфейсом)
- пользовательский интерфейс (общая библиотека, которая содержит ресурсы пользовательского интерфейса, типы и т.д.)
- другие плагины (общие библиотеки, загружаемые основным приложением, которое будет использовать менеджер плагинов из ядра
Основная причина этого заключается в том, что я хочу иметь возможность заменить все части приложения, просто загрузив плагины для моего приложения (через окно менеджера плагинов в этом приложении).
Допустим, я хочу изменить внешний вид своего приложения. В этом случае я должен просто выпустить новую версию общей библиотеки / плагина пользовательского интерфейса.
Я не уверен, будет ли это работать, если эта общая библиотека пользовательского интерфейса связана с моим приложением компоновщиком при компиляции приложения (ядро и пользовательский интерфейс связаны компоновщиком, другие общие библиотеки / плагины загружаются менеджером плагинов при запуске приложения).
Вопрос: Вероятно, в конечном исполняемом файле будут сохранены некоторые метаданные об этих библиотеках, например, размер?? Так что я, вероятно, не могу просто заменить общую библиотеку пользовательского интерфейса, без необходимости снова компилировать и связывать мое приложение?
Ответ №1:
Вообще говоря, вы можете заменить разделяемую библиотеку другой версией разделяемой библиотеки в дистрибутиве (без перекомпиляции исполняемого файла и т. Д.) В случае, Если исходная библиотека и замененная библиотека имеют одинаковый ABI