DLL_function„Ґ)
Для расширения возможностей в среде имеется механизм добавления функций из динамически подключаемых библиотек (Dynamic Link Libraries, DLL). Данные библиотеки являются стандартными для Windows и могут создаваться на языках программирования C++, Pascal или других. Для подключения к среде Stratum необходимо создать текстовый файл, описывающий содержащиеся в библиотеке функции.
Файл описания должен иметь расширение TDL и содержать следующие элементы.
DLL <"имя файла"> <16/32> [PRELOAD]
это заголовок библиотеки - указывается имя DLL файла и тип - 16 или 32 разрядная библиотека (соответственно для 16 и 32 разрядной версии Stratum). Если указана опция PRELOAD, то DLL инициализируется сразу при загрузке, иначе при первом вызове функции.
NAME ["CDECL"/"PASCAL"] <"имя функции">[,"имя функции в DLL"] [[ARG] "тип аргумента"[:"тип в DLL"][,...]] [RET ["тип возвращаемого значения"][:"тип в DLL"]]
Перечисляются функции, находящиеся в DLL. Здесь перечисляются последовательно:
- тип вызова, если необходимо, (CDECL/PASCAL). По умолчанию для 16-ти разрядной версии Stratum принимается тип PASCAL, для 32-х разрядной CDECL;
- имя функции, как она будет видна в среде Stratum;
- имя функции, если необходимо, как она называется в DLL. Имена функций в DLL могут не совпадать с внешними именами, для их получения можно воспользоваться утилитами типа impdef.exe, exemap.exe и другими;
- аргументы (если есть), через запятую перечисляются типы, из числа принятых в среде Stratum. Если необходимо, через двоеточие указывается тип аргумента в DLL, в этом случае при вызове функции будет происходить преобразование аргумента;
- возвращаемое значение (если есть), указывается тип, принятый в среде Stratum, и, если необходимо, преобразование типа.
Таблица поддерживаемых типов для преобразования аргументов функций:
тип аргумента в функции DLL |
размер (байт) |
тип в Stratum соответствующий без преобразования |
описание |
word8 |
1 |
|
беззнаковое, целое |
int8 |
1 |
|
знаковое, целое |
word16 |
2 |
|
беззнаковое, целое |
int16 |
2 |
|
знаковое, целое |
word32 |
4 |
HANDLE, COLORREF, STRING, (POINTER) |
беззнаковое, целое или указатель |
int32 |
4 |
INTEGER |
знаковое, целое |
float32 |
4 |
|
с плавающей запятой |
float64 |
8 |
FLOAT |
с плавающей запятой |
float80 |
10 |
|
с плавающей запятой |
Если не обходимо, возможно преобразование типов передаваемых данных как в аргументах, так и в возвращаемом значении.
Пример: запись ARG "FLOAT":"int16" будет означать преобразование из целого и знакового слова в стандартный для Stratum тип числа с плавающей запятой.
В одном файле может описываться сразу несколько библиотек.
Пример файла описания (на одну функцию):
DLL "GWIN2d16.DLL" 16
name "GetAngle","@GETANGLEBYXY2D$QDD" arg "FLOAT","FLOAT" ret "FLOAT"
DLL "GWIN2d32.DLL" 32
name "GetAngle","@GetAngleByXY2d$qqsdd" arg "FLOAT","FLOAT" ret "FLOAT"
Среда автоматически подгружает DLL, встретив файл описания. Для этого достаточно поместить его в директорию своего проекта. Если вы хотите сделать новые функции доступными во всех проектах, то необходимо поместить файл описания директорию LIBRARY. При загрузке файла в случае ошибок появятся соответствующие сообщения.
Внимание: в случае ошибок в функциях DLL или их неправильном подключении последствия могут быть непредсказуемы.
Created with the Personal Edition of HelpNDoc: Free Web Help generator