Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как -то много файлов непонятных. Не мучайтесь, создайте новый, чистый dll проект, ему не нужно лежать в МТ папке, например в C:\projects. После его компиляции/линковки в папке с проектом появится файл с расширением .dll. Его перемещаем в <папка терминала>\experts\libraries. Результаты вызова отображаются на вкладках терминала - журнал, эксперты.
P.S: когда разберетесь, можно настроить выходной каталог для проекта, dll сразу будет ложиться туда, очень удобно.
Может пригодится: https://www.mql5.com/ru/articles/18, но это MQL5 есть различия.
Да, я частично протупил. #import "MyFirstDLL.dll" было скопировано просто бездумно.
В общем, можно по частям?
1. Препроцессор заменяет строку #include <имя_файла> содержимым файла WinUser32.mqh- это из примера.
И я вот думаю, по логике, что же мне вписать? Это не файл с расширением .cpp нет это должен быть скомпилированный файл но все же нет не .ex4 так как в проэкте визуал студии его нету и быть не может видимо скорее это файл .exe . А файл с расширением .dll это что??? Это в общем другое имя файла .exe?
Стал изучать проект, что бы через свойства папки вписать себе ее правильно и имя, и расширение. И вот, смотрите, я вовсе потерялся, в проекте масса расщирений а такие расширения можно найти тольков папке дебаг моя папка и я короче вовсе растерялся, там обалдеть много всего.
Ух ё, архиватор, прри попытке разбить папку на архив частями, творит невразумительное- создает одну (!!) папку __rar_03.750, она растет 5 минут по обьему, и просто исчезает из компа!!!!!!
2. По ссылке, спасибо, построил проект и внес в него макрос, перестроил, вот, а куда
Правильно оформленная экспортная функции должна иметь следующий вид:
}
экспортная функция эта где должна быть?
1. Проект компилируется? Без ошибок? Если да, то установите выходной каталог в известное вам место, ничего искать не придется (описано в статье выше).
2. Вы должны получить файл.dll для импорта его функций в MT. Для импорта функций из него в мета эдиторе пишем:
3. dll - не exe, exe запускается руками в ней есть стартовая функция, dll используется другой программой (exe).
4. если решили использовать __stdcall , то есть особенности, даже если напишите extern "C" имя будет изменяться (в таблице экспорта), если не ошибаюсь - будет добавлено @<размер параметров> в конец имени. Либо смотреть имя при помощи различных утилит (например dumpbin), либо поиском через блокнот, либо сделать для проекта .def файл (его пример есть в MT\experts\samples\DLLSample). Мало просто кинуть def файл в папку с проектом (к .h и .cpp файлам) еще нужно отразить это в настройках проекта: свойства проекта/компоновщик/ввод/файл определения модуля.
5. Кое-что писал здесь: https://www.mql5.com/ru/forum/140601/page6
...
экспортная функция эта где должна быть?
в .cpp; если объявление функции отдельно (в .h), то реализация в .cpp, а вся мишура (export и т.д.) в .h
1. Проект компилируется? Без ошибок? Если да, то установите выходной каталог в известное вам место, ничего искать не придется (описано в статье выше).
2. Вы должны получить файл.dll для импорта его функций в MT. Для импорта функций из него в мета эдиторе пишем:
3. dll - не exe, exe запускается руками в ней есть стартовая функция, dll используется другой программой (exe).
4. если решили использовать __stdcall , то есть особенности, даже если напишите extern "C" имя будет изменяться (в таблице экспорта), если не ошибаюсь - будет добавлено @<размер параметров> в конец имени. Либо смотреть имя при помощи различных утилит (например dumpbin), либо поиском через блокнот, либо сделать для проекта .def файл (его пример есть в MT\experts\samples\DLLSample). Мало просто кинуть def файл в папку с проектом (к .h и .cpp файлам) еще нужно отразить это в настройках проекта: свойства проекта/компоновщик/ввод/файл определения модуля.
5. Кое-что писал здесь: https://www.mql5.com/ru/forum/140601/page6
В новом метаэдиторе (билды >= 529) есть любопытный сервис: если DLL находится в MQL-песочнице (видна в метаэдиторе), то достаточно взять её мышкой из навигатора и бросить в окно с текстом программы, чтоб получить список имён готовый к импортированию. Примерно в таком виде:
Параметры, правда, не указываются, но зато с именами после этого проблем не возникает.
--
p.s. только что выяснил, что кидать dll-ку в окно редактора можно и прямо из проводника. эффект тот же.