Форум трейдеров » Торговые роботы, советники, индикаторы » Использование DLL совместно с MQL
+ Подписаться
Страница 1 из 2 12 ПоследняяПоследняя
  1. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей

    Использование DLL совместно с MQL

    Возникла необходимость перенести некоторые функции в DLL, но вот беда лет 5 уже программированием кроме MQL не занимался :)

    скрипт test
    Код:
    #import "key.dll"
       int res(int a);
    #import
    
    int start()
      {
    //----
       Alert (res(12));
    //----
       return(0);
      }
    key.dll
    Код:
    library key;
    
    uses
      SysUtils,
      Classes;
    
    {$R *.res}
    
    function res(a:Integer):Integer;
    begin
      Result := a;
    end;
    
    exports res;
    
    begin
    end.
    При запуске скрипта терминал вылетает по критической ошибке, чувствую, что что-то не так делаю, а что не пойму :D
    Недоступно! Pro 0
    Поделиться
    Просмотров: 4,928
  2. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Возникла необходимость перенести некоторые функции в DLL, но вот беда лет 5 уже программированием кроме MQL не занимался :)

    скрипт test
    Код:
    #import "key.dll"
       int res(int a);
    #import
    
    int start()
      {
    //----
       Alert (res(12));
    //----
       return(0);
      }
    key.dll
    Код:
    library key;
    
    uses
      SysUtils,
      Classes;
    
    {$R *.res}
    
    function res(a:Integer):Integer;
    begin
      Result := a;
    end;
    
    exports res;
    
    begin
    end.
    При запуске скрипта терминал вылетает по критической ошибке, чувствую, что что-то не так делаю, а что не пойму :D
    в Делфах при включенной директиве Оптимизация параметры, по возможности, передаются не через стэк, а через регистры..
    Нет сейчас, увы, ничего под рукой.. Хелп посмотри - про порядок передачи данных в функции.. конвенции..
  3. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от EQU Посмотреть сообщение
    в Делфах при включенной директиве Оптимизация параметры, по возможности, передаются не через стэк, а через регистры..
    Нет сейчас, увы, ничего под рукой.. Хелп посмотри - про порядок передачи данных в функции.. конвенции..
    Спасибо, сейчас посмотрю.
  4. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Похоже проблема в чём-то другом зарыта, на всякий случай добавил директиву отключения оптимизации, но результат тот же.
    Без параметров функция вызывается замечательно, но с параметрами вылетает.
    Написал exe-шник, от туда вызывается нормально с параметрами, а вот из скрипта mql ошибка. Мистика :)
  5. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Пол ночи сидел :) нашёл ответ на форуме MQL, надо было добавить соглашение вызова в функцию.

    Код:
    function res(a:Integer):Integer;stdcall;
  6. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Пол ночи сидел :) нашёл ответ на форуме MQL, надо было добавить соглашение вызова в функцию.

    Код:
    function res(a:Integer):Integer;stdcall;
    Денис, ну, убил ты меню.. )))
    эт и есть - конвенция - порядок загрузки в стэк параметров.. прописана именно в хелпе, а как на форум попала - загадка..:D
  7. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от EQU Посмотреть сообщение
    Денис, ну, убил ты меню.. )))
    эт и есть - конвенция - порядок загрузки в стэк параметров.. прописана именно в хелпе, а как на форум попала - загадка..:D
    Хелп у мню кокой-то не хороший, тормозной, к тому же на английском, вот и пришлось в инете его искать, а вот как именно на форум MQL попал не пойму, наверное там описание решения было проще :D

    ЗЫ: Зато начал вспоминать потихоньку что такое Delphi :)
  8. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Хелп у мню кокой-то не хороший, тормозной, к тому же на английском, вот и пришлось в инете его искать, а вот как именно на форум MQL попал не пойму, наверное там описание решения было проще :D

    ЗЫ: Зато начал вспоминать потихоньку что такое Delphi :)
    Делфай - если выкинуть всё, что не относиться к компилятору - очень дерзко-убойная штука для работы с WinAPI получается.. )))

    Не знаю, есть ли такое гдет сейчас..
    Поищи модули Ленина для Делфы..(Lenin Moduls) - там совсем немного - но _очень полезно.. Если не для работы - то, хотя б для понимания происходящих в винде процессов..
  9. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от EQU Посмотреть сообщение
    Делфай - если выкинуть всё, что не относиться к компилятору - очень дерзко-убойная штука для работы с WinAPI получается.. )))

    Не знаю, есть ли такое гдет сейчас..
    Поищи модули Ленина для Делфы..(Lenin Moduls) - там совсем немного - но _очень полезно.. Если не для работы - то, хотя б для понимания происходящих в винде процессов..
    Спасибо, но далеко я залезать не хочу, всё это пришлось вспоминать только для защиты эксперта, хотя конечно гляну что там :D
  10. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    Спасибо, но далеко я залезать не хочу, всё это пришлось вспоминать только для защиты эксперта, хотя конечно гляну что там :D
    не.. ток к Ленину!!!))))))

Вверх
РегистрацияX

чтобы писать, читать, комментировать