ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Category:

Создание библиотеки классов (.dll): проект DLL

Начало тут:
1. библиотека классов;
2. создание библиотеки классов (в тексте);
3. создание библиотеки классов (объектный файл);
4. создание библиотеки классов (.lib);
5. создание библиотеки классов (.dll): теория.

Область применения: язык программирования C++, операционная система «Windows 7», среда разработки «Visual Studio Community 2017».

У нас уже есть пример библиотеки классов в текстовом виде, который я использовал в этой серии постов. Он состоит из двух исходных текстовых файлов mylib.h и mylib.cpp (подробности — в предыдущих постах серии). Это интерфейс и реализация библиотеки классов соответственно. Ранее я преобразовывал реализацию этой библиотеки классов из текстового вида сначала в объектный файл .obj, а затем в файл статической библиотеки .lib. В этом посте будем преобразовывать реализацию нашей библиотеки классов в файл динамически подключаемой библиотеки .dll.

Создание проекта по созданию DLL в среде «Visual Studio Community 2017»

1. Для создания DLL создадим новый пустой проект (в указанной среде есть и специализированные проекты, но я предпочитаю работать с пустым, чтобы научиться понимать все настройки проекта). Итак, пункт меню «Файл – Создать – Проект...». В открывшемся окне «Создание проекта» в меню слева выберем пункт «Установленные – Visual C++». В меню в центре выберем пункт «Пустой проект». В этом же окне внизу в реквизите «Имя» вместо названия проекта по умолчанию можно указать своё, я выбрал ProjectDLL. (Реквизит «Расположение» оставим по умолчанию, галки «Создать каталог для решения» и «Добавить в систему управления версиями» я снял.) Запускаем создание проекта кнопкой «OK» в правом нижнем углу окна.

2. Добавляем текстовые исходные файлы mylib.h и mylib.cpp в наш проект. Для этого я копирую эти файлы в папку проекта (эта папка была создана средой при создании проекта по пути Расположение\Имя\ из упомянутых выше реквизитов «Расположение» и «Имя»). После этого я добавляю эти файлы в проект через «Обозреватель решений»: mylib.h в ветку «Файлы заголовков» нашего проекта, а mylib.cpp в ветку «Исходные файлы» нашего проекта. Теперь, щелкнув дважды левой кнопкой мыши по названиям этих файлов в указанных ветках нашего проекта в «Обозревателе решений», эти файлы можно открыть для редактирования.

3. На панели инструментов я выбираю активной конфигурацию решения «Release» и платформу решения «x86».



4. Сделаем нужную нам настройку свойств проекта. Для этого откроем окно свойств проекта. Я это делаю через «Обозреватель решений», щелкнув правой кнопкой мыши по названию нашего проекта. В открывшемся контекстном меню следует выбрать самый последний пункт «Свойства». В открывшемся окне «Страницы свойств ProjectDLL» сначала следует сверху в реквизитах «Конфигурация» и «Платформа» проверить, что выбраны нужные нам конфигурация решения «Release» и платформа решения «x86» (свойства проекта можно устанавливать разными для разных конфигураций и платформ решения).

После этого в меню слева выберем пункт «Свойства конфигурации – Общие». Далее в списке свойств справа значение свойства «Тип конфигурации» следует изменить на «Динамическая библиотека (.dll)». Сохраним значения свойств проекта с помощью кнопки «OK» в правом нижнем углу окна.

Готово

Теперь уже можно запустить компиляцию (сборку) проекта с помощью пункта меню «Сборка – Собрать решение». В результате сборки будет создана папка Расположение\ProjectDLL\Release\ (тут под словом «Расположение» подразумевается значение упомянутого выше при создании проекта реквизита), в которой даже появится итоговый файл динамической библиотеки ProjectDLL.dll.

Однако, воспользоваться этим файлом пока еще нельзя, потому что для «экспорта» из динамической библиотеки программных сущностей (функций, классов и так далее) их следует отметить, как «экспортируемые». А мы этого пока еще не сделали.

Просмотреть список экспортируемых из динамической библиотеки программных сущностей можно с помощью утилиты DUMPBIN. Она входит в состав среды «Visual Studio Community 2017». Эту утилиту можно запустить только из командной строки среды «Visual Studio Community 2017», ее нельзя запустить из командной строки операционной системы или из «Проводника Windows» (это сказано на странице утилиты). Запустим командную строку среды «Visual Studio Community 2017» с помощью пункта меню «Средства – Командная строка Visual Studio».

В открывшемся окне следует дождаться появления похожего на такое приглашения:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools>

Теперь можно запускать утилиту DUMPBIN с ключевым словом /EXPORTS, чтобы вывести на экран все определения программных сущностей, экспортируемых из DLL. После этого ключевого слова еще следует указать путь к анализируемой DLL:
dumpbin /exports c:\users\Илья\source\repos\ProjectDLL\Release\ProjectDLL.dll

Вот что у меня получилось для нашей динамической библиотеки ProjectDLL.dll:



На рисунке видно, что кроме названия файла DLL, типа файла и ни о чем не говорящего раздела «Summary» (по-русски «краткое содержание») утилита больше ничего на экран не вывела. Нет ничего похожего на таблицу экспорта, что означает, что ничего не экспортируется.

Мы исправим это в следующем посте.
Tags: Образование, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments