Процедура для длл пишется почти так же как и обычная процедура только с приставкой DLL, например:
ProcedureDLL.f Vector2Length(x1.f, y1.f, x2.f, y2.f)
Dx.f = x2 - x1
Dy.f = y2 - y1
ProcedureReturn Sqr(Dx * Dx + Dy * Dy)
EndProcedure
Далее открываем "Compiler\Compiler Options" и меняем "executable format" на "Shared dll". После чего "Compiler\Create executable".
Существуют так-же специальный процедуры:
Процедура которая выполняется, если какой-либо процесс начал использование этой длл, удобна для инициализации данных.
ProcedureDLL AttachProcess()
EndProcedure
А эта, соотвественно выполняется после того как процесс закончил использование длл, удобна для деинициализации данных
ProcedureDLL DetachProcess()
EndProcedure
А это тоже самое только для потоков:
ProcedureDLL AttachThread()
EndProcedure
ProcedureDLL DetachThread()
EndProcedure