Виды библиотек DLL

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

Доступны различные типы библиотек DLL

С помощью Visual Studio можно создавать библиотеки DLL Win32 на языке C или C++, которые не используют библиотеку Microsoft Foundation Classes (MFC). Проект DLL, не использующий MFC, можно создать с помощью мастера приложений Win32.

Библиотека MFC доступна в библиотеках статической компоновки или в ряде библиотек DLL при использовании мастера DLL MFC. Если библиотека DLL использует MFC, Visual Studio поддерживает три различных сценария разработки:

  • создание обычной библиотеки DLL MFC, статически связанной с MFC;

  • создание обычной библиотеки DLL MFC, динамически связываемой с MFC;

  • создание библиотеки DLL расширения MFC, которая всегда связывается с MFC динамически.

Дополнительные сведения

Выбор типа библиотеки DLL для использования

Если библиотека DLL не использует MFC, используйте Visual Studio для создания библиотеки DLL Win32, не связанной с MFC. Связывание библиотеки DLL с MFC (как статическое, так и динамическое) требует много места на диске и памяти. Связывание с MFC следует осуществлять, только если библиотека DLL действительно использует MFC.

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

Библиотека DLL, динамически связываемая с MFC, создается быстрее, чем связанная статически, так как нет необходимости связывать саму библиотеку MFC. Это особенно справедливо в случае с отладочными сборками, когда компоновщик должен сжимать отладочную информацию. Благодаря связыванию с библиотекой DLL, которая уже содержит отладочную информацию, будет требоваться сжимать меньше отладочной информации.

Одним из недостатков динамического связывания с MFC является необходимость в распространении общих библиотек DLL Mfcx0.dll и Msvcrxx.dll (или аналогичных файлов) вместе со своей библиотекой DLL. Библиотеки DLL MFC являются свободно распространяемыми, но их все равно необходимо устанавливать в процессе выполнения программы установки. Кроме того, необходимо включать в распространяемый пакет файл Msvcrxx.dll, содержащий библиотеку времени выполнения C, которая используется как вашей программой, так и самими библиотеками DLL MFC.

Если библиотека DLL будет использоваться только исполняемыми файлами MFC, можно создать обычную библиотеку DLL MFC или библиотеку DLL расширения MFC. Если библиотека DLL реализует многократно используемые классы, производные от существующих классов MFC, или необходимо передавать производные от MFC объекты между приложением и библиотекой DLL, следует создать библиотеку DLL расширения MFC.

Если библиотека DLL динамически связывается с MFC, вместе с ней должны распространяться библиотеки DLL MFC. Такая архитектура особенно полезна для совместного использования библиотеки классов несколькими исполняемыми файлами для экономии места на диске и памяти.

Дополнительные сведения

См. также

Создание библиотек DLL на C и C++ в Visual Studio