logo search
Лаба6

2.Создание dll

Ничего особенного здесь нет. Как обычно, вы просто пишите функции, как в обычной программе. Если вы используете MSVC, создайте новый проект и укажите, что вы создаете Win32 Dynamic-Link Library. После компиляции вы получите DLL, библиотеку импорта (.lib) и библиотеку экспорта (.exp). Далее показан примерный код DLL:

Заголовочный файл (DLLTEST.H)

#ifndef _DLLTEST_H_ #define _DLLTEST_H_ #include <iostream.h> #include <stdio.h> #include <windows.h> extern "C" __declspec(dllexport) void NumberList(); extern "C" __declspec(dllexport) void LetterList(); #endif

Код библиотеки (DLLTEST.CPP)

#include "dlltest.h"

#define MAXMODULE 50

char module[MAXMODULE];

extern "C" __declspec(dllexport) void NumberList() {     GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);     cout << "\n\nThis function was called from "     << module     << endl << endl;     cout << "NumberList(): ";     for(int i=0; i<10; i++)     {        cout << i << " ";     }     cout << endl << endl; }

extern "C" __declspec(dllexport) void LetterList() {     GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);     cout << "\n\nThis function was called from "     << module     << endl << endl;     cout << "LetterList(): ";     for(int i=0; i<26; i++)     {        cout << char(97 + i) << " ";     }     cout << endl << endl; }

Как видите, ничего особенного в коде нет. Приложение, используемое для примера - консольное, так что здесь просто запрограммированы две функции, выводящие текст. Строка extern "C" __declspec(dllexport) означает, что функция будет видна вне DLL (т.е. ее можно вызывать из нашей программы). После компиляции мы получим библиотеку. Теперь посмотрим, как ее можно использовать.