![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
возможно поможет, там тоже структуры возюкаются
был пример МТ5 <=> С++ CLI <=> C# для DLL, но он мне показался громоздким и я его схе*ачил :)
Благодарю всех за помощь. Не успел прочитать ваши ответы, в итоге сделал все через передачу char массивами с заранее известными разделителями.
а в dll уже все перебираю и выделяю нужное. Довольно хорошо получилось, однако опять же вопрос по стыковке. Когда я пытаюсь подключиться к Dll из тестового скрипта, скрипт вылетает когда доходит до первой же функции (Cpp_OnInit).
Сама dll к которой я подключаюсь, содержит в себе только алгоритм (или же тестовый пример как в текущем варианте, дабы не утомлять Вас ненуюжыми реализациями, приведу только хедры) :
Test.h
Эта dll включает в себя .lib библиотеку где организовано само подключение если в вкратце то она состоит из сделующего:
Пытаюсь наладить такую вот стыковку:
Робота пишу на С++, далее присоединяю .lib файл, через него подключаюсь к MT5...
Сама библиотека .lib работает исправно дебагил и не раз (через консольное приложение)
dll пример тоже проверен и вся связка работает, однако когда подключаюсь из Mql то вылетает следующее:
Однако функция там точно есть (тянется из .lib файла) Я так же пытался вставить в dll хедр и реализацию экспортируемых функций, однако ошибка та же...
Есть подозрение что с зависимостями не все ладно:
однако как добавить нужные (красные) не совсем пойму, не знаю сигнатуры некоторых функций, к примеру пытался из kernel32 добавить запрашиваемую функцию, однако не получилась с типами данных связать
Подскажите кто в курсе как их добавить ? или же в чем еще может быть загвоздка ?
Dll библиотека (тестовая моя) которую пытаюсь запустить в релиз скомпил, и соответственно дебаг ссылок не каких не содержит уже...
Так же касательно зависимостей есть подозрение что дело не в них а где то еще (так как когда я компилил пример для теста работы с текстом, то он запустился без проблем, однако тоже имел некоторые красные зависимости.)
Так же касательно зависимостей есть подозрение что дело не в них а где то еще (так как когда я компилил пример для теста работы с текстом, то он запустился без проблем, однако тоже имел некоторые красные зависимости.)
Попробуйте build 1646 там то точно все работало. Похожая ошибка как появилась после обновления - так и осталась до сих пор
https://www.mql5.com/ru/forum/1111/page2103#comment_6159407
Благодарю всех за помощь. Не успел прочитать ваши ответы, в итоге сделал все через передачу char массивами с заранее известными разделителями.
а в dll уже все перебираю и выделяю нужное. Довольно хорошо получилось, однако опять же вопрос по стыковке. Когда я пытаюсь подключиться к Dll из тестового скрипта, скрипт вылетает когда доходит до первой же функции (Cpp_OnInit).
Сама dll к которой я подключаюсь, содержит в себе только алгоритм (или же тестовый пример как в текущем варианте, дабы не утомлять Вас ненуюжыми реализациями, приведу только хедры) :
Test.h
Эта dll включает в себя .lib библиотеку где организовано само подключение если в вкратце то она состоит из сделующего:
Пытаюсь наладить такую вот стыковку:
Робота пишу на С++, далее присоединяю .lib файл, через него подключаюсь к MT5...
Сама библиотека .lib работает исправно дебагил и не раз (через консольное приложение)
dll пример тоже проверен и вся связка работает, однако когда подключаюсь из Mql то вылетает следующее:
Однако функция там точно есть (тянется из .lib файла) Я так же пытался вставить в dll хедр и реализацию экспортируемых функций, однако ошибка та же...
Есть подозрение что с зависимостями не все ладно:
однако как добавить нужные (красные) не совсем пойму, не знаю сигнатуры некоторых функций, к примеру пытался из kernel32 добавить запрашиваемую функцию, однако не получилась с типами данных связать
Подскажите кто в курсе как их добавить ? или же в чем еще может быть загвоздка ?
Dll библиотека (тестовая моя) которую пытаюсь запустить в релиз скомпил, и соответственно дебаг ссылок не каких не содержит уже...
Так же касательно зависимостей есть подозрение что дело не в них а где то еще (так как когда я компилил пример для теста работы с текстом, то он запустился без проблем, однако тоже имел некоторые красные зависимости.)
Сделайте def - файл такого содержания:
1. скачай эту прогу http://www.nirsoft.net/utils/dll_export_viewer.html
2. открой свою DLL в ней
3. посмотри как компилятор обозвал твои методы, иногда может добавить подчеркивание
ошибка про unresolved function call еще иногда бывает когда неправильно указал порядок параметров функции, например, stdcall вместо cdecl, сейчас полного примера нет, но вот простой вызов, который точно работал
Благодарю всех за помощь. Не успел прочитать ваши ответы, в итоге сделал все через передачу char массивами с заранее известными разделителями.
а в dll уже все перебираю и выделяю нужное. Довольно хорошо получилось, однако опять же вопрос по стыковке. Когда я пытаюсь подключиться к Dll из тестового скрипта, скрипт вылетает когда доходит до первой же функции (Cpp_OnInit).
Сама dll к которой я подключаюсь, содержит в себе только алгоритм (или же тестовый пример как в текущем варианте, дабы не утомлять Вас ненуюжыми реализациями, приведу только хедры) :
Test.h
Эта dll включает в себя .lib библиотеку где организовано само подключение если в вкратце то она состоит из сделующего:
Пытаюсь наладить такую вот стыковку:
Робота пишу на С++, далее присоединяю .lib файл, через него подключаюсь к MT5...
Сама библиотека .lib работает исправно дебагил и не раз (через консольное приложение)
dll пример тоже проверен и вся связка работает, однако когда подключаюсь из Mql то вылетает следующее:
Однако функция там точно есть (тянется из .lib файла) Я так же пытался вставить в dll хедр и реализацию экспортируемых функций, однако ошибка та же...
Есть подозрение что с зависимостями не все ладно:
однако как добавить нужные (красные) не совсем пойму, не знаю сигнатуры некоторых функций, к примеру пытался из kernel32 добавить запрашиваемую функцию, однако не получилась с типами данных связать
Подскажите кто в курсе как их добавить ? или же в чем еще может быть загвоздка ?
Dll библиотека (тестовая моя) которую пытаюсь запустить в релиз скомпил, и соответственно дебаг ссылок не каких не содержит уже...
Так же касательно зависимостей есть подозрение что дело не в них а где то еще (так как когда я компилил пример для теста работы с текстом, то он запустился без проблем, однако тоже имел некоторые красные зависимости.)
у меня в для MT4 экспорт в хидерах прописывается вот так :
#ifdef DLL
#define MQL_EXPORT __declspec(dllexport)
#else
#define MQL_EXPORT
#endif
#define MQL_API(t) MQL_EXPORT t __stdcall
MQL_API(int) mySomeFunc1(); // к примеру
получается яснее - есть макрос MQL_API(type) обозначающий экспортируемую функцию, легко искать. Конечно *.def обязателен к применению. Библиотеки собираются с /MD это тоже важно. И все функции __stdcall - параметры передаются исключительно через стек.
тогда всё работает, вплоть до компиляции на лету https://www.mql5.com/ru/forum/224745/page2#comment_6387202
И все функции __stdcall - параметры передаются исключительно через стек.
в x64 большинство параметров передаются через регистры - поэтому и быстродействие выше
в x64 большинство параметров передаются через регистры - поэтому и быстродействие выше
а значит порядок вычисления аргументов справа налево теряет смысл (как бы его вообще не изменили).
и дальнейшей оптимизации в указанном направлении в MQL мешает отсутствие ключевого слова inline
https://www.mql5.com/ru/forum/1111/page2042#comment_5860752
помог def файл
А пример (для теста работы с текстом, который запустился без проблем) работал без него?