0
129
Раз уж на форуме упомянулся Lazarus, у которого сегодня релиз. Набросаю микро-DLL на паскале, глядишь кому и пригодится
Сам по себе Lazarus берётся тут: https://www.lazarus-ide.org/
Дальше всё до элементарного просто, кликаем "меню/файл/создать" и выбираем "библиотека"
Простейший код на Паскале:
library sumoftwo; {$mode objfpc}{$H+} uses Classes { you can add units after this }; { пример экспортируемой функции соблюдаем разрядность параметров: double он и в африке double, соглашения о вызовах - stdcall функция экспортируема --- !! 1. ни в коем случае в DLL не вызывать Writeln - консоль закрыта, !! любая запись приведёт к краху !! 2. все исключения должны быть перехвачены } function SumOfTwo(one:double;two:double):double;stdcall;export; begin try Result:=one+two; except begin Result:=0; end; end; end; { не забыть - список экспортируемых функций в паскале так принято } exports SumOfTwo; begin end.
в IDE компилируем (Ctrl-F9)
копируем полученную DLL в каталог MQL5/Scripts
и пишем скрипт:
#property copyright "Maxim A.Kuznetsov" #property link "https://www.luxtrade.tk" #property version "1.00" #import "sumoftwo.dll" double SumOfTwo(double one,double two); #import void OnStart() { double one=1.0; double two=2.0; double res=SumOfTwo(one,two); PrintFormat("%f+%f=%f (should be %f)",one,two,res,one+two); }
запускаем, смотрим результат:
2023.12.23 02:00:08.105 SumOfTwo (GBPUSD,M5) 1.000000+2.000000=3.000000 (should be 3.000000)
то есть в принципе всё элементарно.
Теперь можем использовать не только C/C++ но и довольно продвинутую IDE со всеми компонентами FreePascal (базами,сокетами,потоками и прочая-прочая).
И заодно поздравляю команду Lazarus с релизом