В 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.