Внешние библиотеки функций

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

Имя подключаемой библиотеки и комментарий к ней указываются в редакторе, показанном на рисунке ниже (имя библиотеки указывается без расширения). Этот табличный редактор открывается при нажатии ЛК на группе Внешние библиотеки в окне структуры программы.

Библиотечные функции, которые предполагается вызывать из программы, описываются в табличном редакторе, который открывается при нажатии ЛК на имени внешней библиотеки в окне структуры программы:

При описании внешней функции в этом редакторе должны быть заданы следующие параметры:

   Внешнее имя – имя, под которым внешняя функция будет вызываться из программы (задается разработчиком программы). Под этим именем внешняя функция добавляется в структуру программы;

   Истинное имя – имя функции, экспортируемое библиотекой;

   Тип возвращаемого значения – тип данных, возвращаемых внешней функцией (см. Определение переменных и констант );

   Соглашение о вызове – соглашение о вызове внешней функции;

   Переменное число аргументов – указание, является ли внешняя функция функцией переменного числа аргументов (возможные опции в этом поле – да и нет);

   Комментарий – необязательный комментарий к функции (задается разработчиком программы).

Аргументы внешних функций описываются в табличном редакторе, который открывается при нажатии ЛК на группе Аргументы функции в окне структуры программы:

В этом редакторе для каждого аргумента указываются следующие параметры:

   Тип данных – тип данных аргумента, выбирается из списка;

   Указатель – если аргумент внешней функции является указателем, в этом поле должно быть указано да, если переменной – нет.

При взаимодействии с внешней библиотекой строка передается в формате Unicode (16 бит). Переменная TRACE MODE должна иметь тип данных STRING, указатель на строку в DLL – WCHAR. Для перевода из WCHAR в CHAR в DLL может использоваться функция WideCharToMultiByte.

Если при загрузке узла в МРВ DLL не найдена, в протокол профайлера (см. Профайлеры ) записывается сообщение вида WRN_LOAD:Templates load error 22,ID=0 Type=1.