Создайте и откомпилируйте пустой проект DLL, который содержит ссылку на файл ресурсов .res, который содержит Ваши ресурсы.

 

Пример использования:

Code:

// Закодированные MakeVersion версии можно просто сравнивать

if GetDLLVersion('SHELL32.DLL') > MakeVersion(5, 0) then

...

 // Вот так можно вывести версию DLL

 var

V: Integer;

begin

V := GetDLLVersion('SHLDOC32.DLL');

ShowMessage(IntToStr(HIWORD(V)) + '.' + IntToStr(LOWORD(V)));

end;

 

Код, представленный ниже демонстрирует простейшую DLL с всего одной функцией "TestDLL". Результат этой процедуры - диалоговое окошко с текстом.

Следующий пример демонстрирует функцию, которая позволяет определить полный путь откуда была загружена dll:

Code:

uses Windows;

 

procedure ShowDllPath stdcall;

var

TheFileName : array[0..MAX_PATH] of char;

begin

FillChar(TheFileName, sizeof(TheFileName), #0);

GetModuleFileName(hInstance, TheFileName, sizeof(TheFileName));

MessageBox(0, TheFileName, 'The DLL file name is:', mb_ok);

end;

 

 

Если ваш компьютер работает под управлением операционной системы Windows, то вы не можете не знать о существовании динамических подсоединяемых библиотек (dynamic link libraries - DLL). Достаточно взглянуть на список файлов, расположенных в системном каталоге Windows - порой количество используемых операционной системой динамических библиотек достигает нескольких сотен. DLL являются неотъемлемой частью функционирования операционных систем семейства Microsoft Windows. Однако для вас может быть неочевидна необходимость использования динамических библиотек при разработке приложений. В рамках данной статьи мы поговорим о принципах функционирования DLL и их использования в процессе создания ваших собственных программ.

 

Данная функция определяет присутствие нужной функции в библиотеке (dll) и, в случае нахождения искомой функции возвращает True, иначе False.

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

 

Стандартный вызов в языках C++ и Object Pascal различается, но набор директив смены типа вызова позволяет обеспечить любую реализацию.

 

Во всех соглашениях о вызовах вызывающая процедура помещает параметры в стек. В зависимости от типа соглашения, очистка стека осуществляется вызывающей или вызываемой процедурой.

 

Иногда бывает полезно знать какими DLL-ками пользуется Ваше приложение. Давайте посмотрим как это можно сделать:

Автор: Simon Carter 

Пример функции

 DLL возможно загружать двумя способами:

 

- статически

- динамически

  

Давайте создадим простую библиотеку DLL:

 

Project file name: c:\example\exdouble\exdouble.dpr