C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 15. Создание и использование dll / Уроки C++ .NET / Visual C++ .NET

Visual C++.NET
Урок 15. Создание и использование dll

На этом занятии мы с вами посмотрим, как можно создавать и использовать собственную dll. Для начала напомним, что dll - это библиотечный файл, который может содержать как некоторые классы, так и отдельные функции. Сам по себе такой файл запускать нельзя - он используется только другими программами. При использовании dll-файла имеется один существенный плюс - этот файл может использоваться сразу в нескольких программах. Так что если у вас есть некоторые общие функции, которые вы предполагаете использовать в разных ваших программах, то создавайте для этих функций отдельную dll.

План наших действий будет такой - сначала мы содадим dll-файл и внесем в него один класс с некоторым методом и одну функцию. Потом мы создадим тестовую программу, в которой мы и будем вызывать метод класса и функцию из нашего dll-файла.

Начинаем создавать dll-файл. Для этого запускаем Visual Studio и создаем новый тип проекта C++ типа Win32 Project:

Выбор типа проекта

В качестве имени проекта для определености задайте firstdll и нажмите на OK.

В появившемся окне Win32 Application Wizard перейдите слева на вкладку Application Settings и отметьте там радиокнопку dll:

Окно Win32 Application Wizard

Нажмите на кнопку Finish.

Мастер нам сделал заготовку для нашей dll. Будем развивать ее. Для этого добавим 1 функцию и один класс с методом. Вот код:

#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    return TRUE;
}
//Наш код.
//Добавляем функцию Add.
__declspec(dllexport) int Add(int a, int b)
{
    return a + b;
}
//Добавляем класс MyClass с методом MyMax.
class MyClass {
public:
    __declspec(dllexport) int MyMax(int a, int b){
        int res;
        if(a>b) res = a; else res = b;
        return res;
    }
};

Обратите внимание, что добавляемы функции и методы, которые мы хотим вызывать извне, вы пишем с модификатором __declspec(dllexport). Таким образом мы помечаем так называемые экспортируемые функции.

Компилируем программу. В папке debug проекта должен появится файл firstdll.dll.

Теперь пишем тестовую программу. Для этого создаем опять новый проект типа Win32 Project, только теперь на вкладке Application Settings выбираем Console Application и ставим галочку Empty Project:

Окно Win32 Application Wizard

Нажимаем на Finish. Добавляем в проект (через меню Project -> Add New Item...) cpp-файл. Пусть он для определенности назван test.cpp. Добавьте в него следующий код:

#include <iostream.h>
//Подключаем необходимый заголовочный файл.
#include "..\firstdll.cpp"
void main()
{
    MyClass w;
    cout<<w.MyMax(22, -40)<<"\n";
    cout<<Add(10, 1)<<"\n";
}

Запускаем программу. Как и следовало ожидать, она выведет 22 и 11.