Справочная информация:
- У вас есть эта большая библиотека C ++, охватывающая несколько библиотек DLL.
- Ваша библиотека экспортирует объекты C ++, а не функции C (поэтому она не переносится в двоичном коде через разные компиляторы).
- Если вы хотите предоставить простой интерфейс для доступа к этой библиотеке, вы будете использовать шаблон фасада для этого.
Вы не делаетеТ нужно упаковать все в одну DLL.Одной из целей этого шаблона является упрощение зависимостей.Его клиенты могут иметь зависимость только от этой библиотеки DLL (но ваш интерфейс может охватывать несколько библиотек DLL, если это необходимо).Например:
- Base64.dll: содержит функции C для кодирования / декодирования текста в base64.
- Network.dll: содержит объекты C ++ для управления сетевыми подключениями.
- RegEx.dll: содержит объекты C ++ для анализа RegEx.
- MailHelpers.dll: содержит объекты C ++ для отправки / получения необработанных сообщений.
Теперь вам нужнообеспечить простой красивый интерфейс для этой задачи.Объект для представления сообщения, другой для соединения и так далее.Вы создадите другую библиотеку DLL (например, Smtp.dll), которая зависит от Base64.dll, Network.dll, RegEx.dll, MailHelpers.dll и предоставляет один общий высокоуровневый интерфейс C ++.Его клиенты добавят зависимость к этой DLL, и они не будут ничего знать о других.
Итак, наконец, ответ no , вам не нужно объединять весь код (изто, что вы хотите скрыть с фасадом) в одной библиотеке.
Второй сценарий: ваша библиотека фасадов будет более сложной.Вы хотите удалить все продвинутые задачи из Smtp.dll в другую библиотеку и планируете создать вспомогательную библиотеку, чтобы упростить выполнение общих задач.У вас будет что-то вроде этого:
- SmtpCore.dll: упрощенный унифицированный интерфейс для SMTP-клиентов.
- SmtpTasks.dll: вспомогательная библиотека с простыми методами для общих задач.Это зависит от SmtpCore.dll, его клиенты будут иметь только эту зависимость (например).
- Mail.dll: полнофункциональная библиотека.Он добавляет классы для получения почты с использованием различных протоколов.Это зависит от SmtpCore.dll и других DLL.Его клиенты будут зависеть от Mail.dll и SmtpCore.dll.
Второй ответ: нет , вы снова используете шаблон фасада, и ваш фасад охватывает несколькобиблиотеки DLL.