Создание проекта библиотеки динамической компоновки (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; просмотров: 1975;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.