Все дело в декорировании, MT4 его не понимал, поэтому необходимо было писать так. Попробуйте в МЕ:
#import "mydll.dll" double ex_calc_d(int d); //Задача - написать так же как и ДЛЛ double ex_calc_h(int h); #import
Если не поможет, то отключите декорирование имени в DLL.
Статья по теме: https://www.mql5.com/ru/articles/18
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
... Что делать?
>>220 Volt
Вопрос снят, спасибо за статью. Помогло.
>>220Volt
Пробовал так, тогда компиляция проходит, но потом ругается сам терминал что не может найти имя такой функции (без @).
>>Urain
Если бы DLL была написана мной, я бы и не использовал @, но она стороняя.
>>220Volt
Пробовал так, тогда компиляция проходит, но потом ругается сам терминал что не может найти имя такой функции (без @).
>>Urain
Если бы DLL была написана мной, я бы и не использовал @, но она стороняя.
Еще так:
#import "mydll.dll" double _ex_calc_d(int d); //Задача - написать так же как и ДЛЛ double _ex_calc_h(int h); #import
Использовать __cdecl?
Или попробовать просто убрать декорации, как уже советовали.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Помогите пожалуйста решить следующую проблему.
Есть DLL в ней есть некоторый набор функций. Функции содержат в имени символ @.
Например _ex_calc_d@12 или _ex_calc_h@8.
В MT4 следующий код компилируется без проблем:
#import "mydll.dll"
double _ex_calc_d@12(int d);
double _ex_calc_h@8(int h);
#import
В MT5 при компиляции этого кода я получаю следующую ошибку:
'@' - unknown symbol mydll.mqh
'12' - semicolon expected mydll.mqh
Что делать?
С уважением, Артем.