Организация stati c библиотек для настольного приложения C ++ - PullRequest
0 голосов
/ 02 апреля 2020

Мое настольное приложение C ++ представляет собой исполняемый файл, который связан с дюжиной статических c библиотек (.lib-файлов) и использует MF C в статической c библиотеке. Общий размер отладочной сборки исполняемого файла составляет 25 МБ.

Я добавляю в нее новую функцию, и мне приходится выбирать между созданием новой библиотеки stati c или добавлением своей функции в одну из существующая библиотека stati c.

Каковы компромиссы? Поскольку число наших stati c libs относительно невелико, а выходной файл exe также мал, каковы недостатки простого объединения всех наших небольших библиотек в одну большую?

1 Ответ

1 голос
/ 02 апреля 2020

Прежде чем ответить на ваш вопрос, я думаю, что важно запомнить вопрос, касающийся выбора lib и dll.

  1. В случае .lib

    • Размер ваших двоичных файлов увеличивается в зависимости от размера ваших библиотек, независимо от того, будут ли ваши библиотеки использоваться или нет во время выполнения.
  2. В случае .dll

    • .dll загружаются по мере необходимости (во время первого вызова) и могут быть разделенным между различными компонентами на протяжении жизненного цикла вашей программы.

    • Они обеспечивают лучшую гибкость, поскольку их управление версиями и управление осуществляется более модульным способом

    • Вы можете лучше управлять проблемами совместимости, особенно специально во время обновления.

В вашем случае:

  • Выбирая решение на основе .lib, вы наследуете все недостатки .lib. ..
  • Группируя различные библиотеки в одну, вы убиваете модульность вашего решения:
    • Представьте, что вы объединяете A.lib и B.lib в C.lib Если завтра вам понадобится только просто B.lib функциональность, вам придется связать с C.lib, и ваши двоичные файлы значительно увеличатся, даже если вам нужно только B.lib
  • Сегодня ваши двоичные файлы небольшие, но вы не Не знаю, что будет завтра ...

Я думаю, что необходимо пересмотреть архитектуру библиотек с учетом этих аспектов, пока все не сложно.
На вашем месте Я выберу решение на основе dll, продвигая модуляцию моих библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...