Обсуждение статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" - страница 10
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да в том-то и дело, что скрипт просто вылетал, как после этого смотреть код ошибки? Или при следующем запуске его можно сразу считать?
В принципе, проблема решилась компиляцией dll под 64x. Правда, потом уже пошли другие ошибки, но это уже не важно, мне нужно было понять, как вообще собирать и линковать библиотеки на c/с++ к mql5. Свой пример сейчас работает нормально.
Если у Вас стоит студия 2017, Вы смотрите эту инструкцию для старой студии и не сращиваете что и как делать, то рекомендую сначала прочесть вот эту статью: https://docs.microsoft.com/ru-ru/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2017
Затем, когда Вы уже создали свою dll по образу и подобию примера из приведённой статьи и протестили её на клиентском приложении, читайте эту инструкцию, начиная с пункта 2, со слов "а в MQL5 программе описываться и вызываться так:". То есть объявляйте свою dll в mt5 как там написано.
Я решил свою проблему именно так.
Хотелось бы список соотношения типов между С++ и MQL в виде макросов.
#define MQL_STRING wchar_t
Вот мой код на с++ Visual Studio 2012. Файл main. с расширением cpp (main.сср)
Далее создал файл с main расширением def (main.def) который имеет список экспортируемых функций, выглядит код так :
LIBRARY "dllmt42" EXPORTS add
Далее в компиляторе произвёл импорт
Компилируется проблем нет, но когда бросаешь советника на график вылазит бяка
unresolved import function call, find '_add' in 'dllmt42.dll'. Total Comander функцию видит как и сам компилятор при перетаскивании файла
Кто может помочь, как решить проблему с ошибкой, как никак есть файл с расширением .def, который хранит и отвечает за корректный экспорт функций?
Вот мой код на с++ Visual Studio 2012. Файл main. с расширением cpp (main.сср)
Далее создал файл с main расширением def (main.def) который имеет список экспортируемых функций, выглядит код так :
Далее в компиляторе произвёл импорт
Компилируется проблем нет, но когда бросаешь советника на график вылазит бяка
unresolved import function call, find '_add' in 'dllmt42.dll'. Total Comander функцию видит как и сам компилятор при перетаскивании файла
Кто может помочь, как решить проблему с ошибкой, как никак есть файл с расширением .def, который хранит и отвечает за корректный экспорт функций?
extern "C" надо добавлять и к декларациям и к имплементациям экспортируемых функций, раз уж тут C++. Иначе сигнатуры входов получаются "плюсовые" и MT (как и все) их не увидит.
extern "C" надо добавлять и к декларациям и к имплементациям экспортируемых функций, раз уж тут C++. Иначе сигнатуры входов получаются "плюсовые" и MT (как и все) их не увидит.
ну дописал я так
И всё равно тоже самое - unresolved import function call, find '_add' in 'dllmt42.dll'.. Т.е. нужен чистый С без ++?
Файл .def не нужен вообще. Нужно в MQL дублировать функции в секции #import
Ну да и без него делали видел я и такое, у меня не идёт, ну покажите что там дублировать наставьте уже на путь истинный?