- Окт 12, 2011
- 209
- 48
- 601
Автор Metro Berlin
Сперва мы создадим библиотеку динамической компоновки (DLL). Библиотеки DLL являются хорошим способом повторного использования кода. Вместо того чтобы каждый раз реализовывать одни и те же подпрограммы в каждом создаваемом приложении, их можно создать единожды и затем вызывать из приложений для обеспечения соответствующей функциональности.
В этом пошаговом руководстве рассматриваются следующие действия:
- создание проекта библиотеки динамической компоновки (DLL);
- добавление класса в библиотеку динамической компоновки;
- создание приложения, ссылающегося на библиотеку динамической компоновки;
- использование функциональных возможностей библиотеки классов в консольном приложении;
- запуск приложения.
Предварительные требования
Этот раздел предполагает знание основ языка C++.
Создание проекта библиотеки динамической компоновки (DLL)
- В меню Файл выберите пункт Создать и затем пункт Проект....
- В узле Visual C++ области Типы проектов выберите Win32.
- В области Шаблоны выберите Консольное приложение Win32.
- Выберите имя проекта, например MathFuncsDll, и введите его в поле Имя. Выберите имя решения, например DynamicLibrary, и введите его в поле Имя решения.
- Для запуска мастера приложений Win32 нажмите кнопку ОК. На странице Общие сведения диалогового окна Мастер приложений Win32 нажмите кнопку Далее.
- На странице Параметры приложения диалогового окна Мастер приложений Win32, в поле Тип приложения, выберите пункт DLL, если он доступен, либо пункт Консольное приложение, если пункт DLL не доступен. В некоторых версиях Visual Studio создание проектов DLL с помощью мастеров не поддерживается. Необходимые изменения можно внести позднее для компиляции проекта в библиотеку DLL.
- На странице Параметры приложения диалогового окна Мастер приложений Win32 в поле Дополнительные параметры выберите пункт Пустой проект.
- Чтобы создать проект, нажмите кнопку Готово.
Добавление класса в библиотеку динамической компоновки
- Чтобы создать файл заголовка для нового класса, в меню Проект выберите команду Добавить новый элемент.... Откроется диалоговое окно Добавление нового элемента. В узле Visual C++ области Категории выберите пункт Код. В области Шаблоны выберите пункт Заголовочный файл (.h). Выберите имя файла заголовка, например MathFuncsDll.h, и нажмите кнопку Добавить. Отобразится пустой файл.
- Добавьте простой класс с именем MyMathFuncs, осуществляющий обычные арифметические операции, такие как сложение, вычитание, умножение и деление. Код должен выглядеть примерно следующим образом:
Код:// MathFuncsDll.h namespace MathFuncs { class MyMathFuncs { public: // Returns a + b static __declspec(dllexport) double Add(double a, double b); // Returns a - b static __declspec(dllexport) double Subtract(double a, double b); // Returns a * b static __declspec(dllexport) double Multiply(double a, double b); // Returns a / b // Throws DivideByZeroException if b is 0 static __declspec(dllexport) double Divide(double a, double b); }; }
- Обратите внимание на модификатор __declspec(dllexport) в объявлениях методов в этом коде. Этот модификатор разрешает экспорт метода библиотекой DLL для использования его другими приложениями
- Чтобы создать исходный файл для нового класса, в меню Проект выберите команду Добавить новый элемент.... Откроется диалоговое окно Добавление нового элемента. В узле Visual C++ области Категории выберите пункт Код. В области Шаблоны выберите пункт Файл C++ (.cpp). Выберите имя исходного файла, например MathFuncsDll.cpp, и нажмите кнопку Добавить. Отобразится пустой файл.
- Реализуйте функциональность класса MyMathFuncs в исходном файле. Код должен выглядеть примерно следующим образом:
Код:// MathFuncsDll.cpp // compile with: /EHsc /LD #include "MathFuncsDll.h" #include using namespace std; namespace MathFuncs { double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw new invalid_argument("b cannot be zero!"); } return a / b; } }
- Чтобы построить библиотеку DLL проекта, в меню Проект выберите Свойства MathFuncsDll. В левой области в поле Свойства конфигурации выберите Общие. В правой области в поле Тип конфигурации выберите Динамическая библиотека (.dll). Нажмите кнопку ОК для сохранения изменений.
- Скомпилируйте библиотеку динамической компоновки, выбрав команду Построить решение в меню Построение. В результате будет создана библиотека DLL, которая может использоваться другими программами. Дополнительные сведения о библиотеках DLL см. в разделе Библиотека DLL в Visual C++.
Создание приложения, ссылающегося на библиотеку динамической компоновки
- Чтобы создать приложение, которое будет ссылаться и использовать созданную ранее библиотеку динамической компоновки, в меню Файл выберите пункт Создать и затем пункт Проект....
- В узле Visual C++ области Типы проектов выберите Win32.
- В области Шаблоны выберите Консольное приложение Win32.
- Выберите имя проекта, например MyExecRefsDll, и введите его в поле Имя. В раскрывающемся списке рядом с полем Решение выберите пункт Добавить в решение. После этого новый проект будет добавлен в то же решение, что и библиотека динамической компоновки.
- Для запуска мастера приложений Win32 нажмите кнопку ОК. На странице Общие сведения диалогового окна Мастер приложений Win32 нажмите кнопку Далее.
- На странице Параметры приложения диалогового окна Мастер приложений Win32 в поле Тип приложения выберите пункт Консольное приложение.
- На странице Параметры приложения диалогового окна Мастер приложений Win32 в поле Дополнительные параметры снимите флажок Предкомпилированный заголовок.
- Чтобы создать проект, нажмите кнопку Готово.
Использование функциональных возможностей библиотеки классов в консольном приложении