При вызове DLL функций из MQL5 никак не проверяется количество и типы передаваемых параметров. Мы работаем только с фукциями по stdcall соглашениям, у которых фактически на практике в таблице импорта нет описания параметров.
Поддержку __stdcall декорированных имен функций с контролем размера передаваемых данных в стек мы добавим в следующем билде. Я уже написал детальную статью про написание DLL библиотек для MQL5 - выпустим сразу после очередного билда терминала.
Кроме того, в MetaTrader 5 используется защита вызовов внешних DLL и если происходит падение в DLL, то среда выполнения MQL5 это отлавливает и останавливает скрипт, не давая упасть терминалу.
Подскажите пожалуйста.
Уже плохо помню, но года два назад читал, что в MQL5 ввели
идентификатор который указывался после объявления функции который указывал
на передачу параметров через регистры процессора т.е. чистый __fastcall.
Не могу найти этот пост. Если кто видел, пожалуйста ответьте.
Подскажите пожалуйста.
Уже плохо помню, но года два назад читал, что в MQL5 ввели
идентификатор который указывался после объявления функции который указывал
на передачу параметров через регистры процессора т.е. чистый __fastcall.
Не могу найти этот пост. Если кто видел, пожалуйста ответьте.
Fastcall вызовы работают автоматически в x64 коде МТ5, где это стандартный метод.
В x86 у нас нет поддержки fastcall методов.
Fastcall вызовы работают автоматически в x64 коде МТ5, где это стандартный метод.
В x86 у нас нет поддержки fastcall методов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Почитал хелп (например, здесь - https://www.mql5.com/ru/docs/runtime/imports), пытаясь выяснить, насколько безопасно пятерка производит вызовы dll, но не нашел инфы. Просветите плиз.
В MT4 никаких проверок не делается и потому терминал падает при расхождении декларации в заголовке mqh с реальным содержимым dll. А хотелось бы, чтобы в момент загрузки dll проверялось соответствие сигнатур и при несоответствии загрузка обрывалась бы с ошибкой в журнал.