Обсуждение статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" - страница 9
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У меня получилось работать со стандартным массивом int, но можно ли передать CArrayObj / CArrayDouble в Visual Studio C++?
В последнем примере в длл тоже правки внесли я так понял?
Я про это
Подскажите также если не затруднит. Есть длл, в неё передается текстовое значение, на выходе получаем число в типе string
Например вот так:
Не могу из-за нехватки знаний подправить длл. Подскажите как правильно оформить код для передачи его в длл, и как грамотно его получить. А то сейчас в МТ5 моя длл не работает.
Заранее спасибо за помощь.
Подскажите также если не затруднит. Есть длл, в неё передается текстовое значение, на выходе получаем число в типе string
Не могу из-за нехватки знаний подправить длл. Подскажите как правильно оформить код для передачи его в длл, и как грамотно его получить. А то сейчас в МТ5 моя длл не работает.Заранее спасибо за помощь.
Перепроверил работу с возвратом строки из DLL и обнаружил ошибку в x64 (появившуюся после введения нескольких оптимизаций). Исправление войдёт в ближайший билд.
Если Вы работаете в x64, то пожалуйста подождите выпуска билда.
Единственное что могу добавить, следует помнить, что MQL5 работает с юникодными строками.
Опубликована статья Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?:
Автор: Renat Fatkhullin
Спасибо за статью. Воспользовался получилось.
Про путь подсказка отличная. Но !! 10 минут ушло на то, чтобы разобраться как правильно в VS2010 установить путь к DLL.
У меня это оказалось так:
C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries
Советую путь скопировать из MetaEditor.
Или указать в enviroment свой (не проверял).
И еще, как там у нас с многопоточностью?
...
Это все хорошо, что вы поднимаете эту тему, но никому не выгодно жаловаться на нее, если они не хотят представить решения или даже предложения о том, как достичь цели.
...
На самом деле, это хорошо, что pfx поднял эту тему и пожаловался, и MetaQuotes должны решить этот вопрос, потому что они знают MetaTrader лучше, чем все остальные (BTW, Ренат Фатхуллин, автор этой статьи, также является генеральным директором MetaQuotes). То, что кто-то поднял эту тему, не означает, что у него есть решение проблемы.
И я согласен, что нет никакого смысла говорить"Лучше делать редкие вызовы", когда .dll фактически вызывается на каждом тике. И приятно слышать это от генерального директора MetaQuotes, честность в наше время не помешает.
@ pfx, похоже, что они изменили параграф, из которого вы процитировали ...
5. Обертка для вызовов DLL и потеря скорости при вызовах
Как уже было описано выше, для обеспечения безопасности каждый вызов DLL-функций оборачивается в специальную обертку.
Эта обёртка маскирует основной код, заменяет стек, поддерживает соглашения stdcall / cdecl и отслеживает исключения внутри вызываемых функций.
Такая работа неизбежно приводит к задержке вызывающей функции.
Поэтому не рекомендуется выполнять очень частые вызовы DLL-функций (сотни или тысячи раз в секунду) для небольших операций.
Лучше выполнять нечастые вызовы.
...к этому ...
5. Обертка для вызовов DLL и потеря скорости при вызовах
Как уже было описано выше, для обеспечения безопасности каждый вызов DLL-функций оборачивается в специальную обертку. Эта обёртка маскирует основной код, заменяет стек, поддерживает соглашения stdcall / cdecl и отслеживает исключения внутри вызываемых функций.
Такой объем работ не приводит к значительной задержке вызова функций.
Я надеюсь, что они действительно решат эту проблему с потерей скорости вызова .dll, а не просто изменят какой-то пункт статьи, чтобы избежать вопросов.
Раз уж речь зашла о вопросах, надеюсь, Ренат Фатхуллин захочет ответить на вопрос pfx " Я серьезно, что это за заявление ", ведь Ренат написал в заключительной строке статьи: "Спасибо за интерес! Я готов ответить на любые вопросы", или хотя бы изменение абзаца.
Нам тоже интересно услышать ваш ответ :).
Я напишу об этом подробнее, когда у меня будет время.
Я не знаю, когда Ренат написал эту статью, но Microsoft больше не предлагает Visual Studio 2005. Они предлагают бета-версии Visual Studio 2010 и 2011 и, похоже, собираются отказаться от 2008.
Нажмите здесь для Microsoft Visual Studio 2010 , и нажмите здесь для 2008. Установщик является веб-установщик, который раздражает, если у вас медленное подключение к Интернету,. Они предлагают офлайн-установщик в виде ISO-образа, но он также содержит Visual Studio C# и Visual Basic. После установки обе студии потребуют обновлений, размер которых также велик.
Для тех, кому не нравится установка Visual Studio, есть другие альтернативы, которые вы можете посмотреть на https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments. Моими любимыми являются NetBeans и Code::Block. NetBeans поддерживается Oracle и является основой для их Oracle Solaris Studio. Однако NetBeans не поставляется с компилятором, поэтому вам придется использовать компилятор Cygwin или MinGW, что может раздражать новичков. Последняя стабильная версия знаменитого DevC++ была выпущена 7 лет назад, сейчас на его сайте полно мертвых ссылок, похоже, никто больше не заботится о них, поэтому я не буду его рекомендовать.
Все же лучше использовать Visual Studio, потому что там есть множество опций, с которыми можно поиграть - если вы знаете, как.
Говоря о вопросах, я надеюсь, что Ренат Фатхуллин, захочет ответить на вопрос pfx " Я серьезно, что это за заявление ", потому что Ренат написал в заключительной строке статьи "Спасибо за интерес! Я готов ответить на любые вопросы", или хотя бы изменение абзаца.