Создание проекта библиотеки динамической компоновки (DLL)
1. В меню Файл выберите Создать, Проект.
2. В левой области диалогового окна Новый проект разверните Установленные, Шаблоны, Visual C++ и затем выберите Win32.
3. В центральной области выберите Консольное приложение Win32.
4. Укажите имя для проекта — например, MathFuncsDll — в поле Имя. Укажите имя для решения — например, DynamicLibrary — в поле Имя решения. Нажмите кнопку ОК.
5. На странице Обзор диалогового окна Мастер приложений Win32 нажмите кнопку Далее.
6. На странице Параметры приложения в разделе Тип приложения выберите DLL.
7. Нажмите кнопку Готово, чтобы создать проект.
Добавление класса в библиотеку динамической компоновки
Чтобы создать файл заголовка для нового класса, в меню Проект выберите Добавить новый элемент. В диалоговом окне Добавить новый элемент в левой области в разделе Visual C++ выберите Код. В центральной области выберите Файл заголовка (.h). Укажите имя для файла заголовка, например MathFuncsDll.h, а затем нажмите кнопку Добавить. Показан пустой заголовочный файл.
Добавьте следующий код в начало файла заголовка:
C++
// MathFuncsDll.h
#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport)
#else
#define MATHFUNCSDLL_API __declspec(dllimport)
#endif
Добавьте базовый класс с именем MyMathFuncs для выполнения общих математических операций, таких как сложение, вычитание, умножение и деление. Код должен выглядеть примерно следующим образом:
C++
namespace MathFuncs
{
// This class is exported from the MathFuncsDll.dll
class MyMathFuncs
{
public:
// Returns a + b
static MATHFUNCSDLL_API double Add(double a, double b);
// Returns a - b
static MATHFUNCSDLL_API double Subtract(double a, double b);
// Returns a * b
static MATHFUNCSDLL_API double Multiply(double a, double b);
// Returns a / b
// Throws const std::invalid_argument& if b is 0
static MATHFUNCSDLL_API double Divide(double a, double b);
};
}
Когда символ MATHFUNCSDLL_EXPORTS определен, символ MATHFUNCSDLL_API установит модификатор __declspec(dllexport) в объявлениях функции-члена в этом коде. Этот модификатор разрешает экспорт функции библиотекой DLL для использования ее другими приложениями. При неопределенном MATHFUNCSDLL_EXPORTS MATHFUNCSDLL_API определяет модификатор __declspec(dllimport) в объявлениях функции-члена. Этот модификатор позволяет компилятору оптимизировать импорта функции из библиотеки DLL для использования в других приложениях. По умолчанию MATHFUNCSDLL_EXPORTS определяется при сборке проекта MathFuncsDll. Для получения дополнительной информации см. dllexport, dllimport. Примечание
Если проект DLL собирается в командной строке, воспользуйтесь параметром компилятора /D, чтобы определить символ MATHFUNCSDLL_EXPORTS.
В проекте MathFuncsDll в Обозревателе решений в папке Исходные файлы откройте файл MathFuncsDll.cpp.
Реализуйте функциональность класса MyMathFuncs в исходном файле. Код должен выглядеть примерно следующим образом:
C++
// MathFuncsDll.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "MathFuncsDll.h"
#include <stdexcept>
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 invalid_argument("b cannot be zero!");
}
return a / b;
}
}
Скомпилируйте библиотеку динамической компоновки, выбрав Собрать решение в меню Сборка. Примечание
При использовании выпуска Express, где не отображается меню Сборка в строке меню выберите Сервис, Параметры, Экспертные параметры, чтобы включить его, а затем выберите Сборка,
Дата добавления: 2017-01-26; просмотров: 1982;