Обсуждение статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" - страница 9

 

У меня получилось работать со стандартным массивом int, но можно ли передать CArrayObj / CArrayDouble в Visual Studio C++?

 

В последнем примере в длл тоже правки внесли я так понял?

Я про это

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

Подскажите также если не затруднит. Есть длл, в неё передается текстовое значение, на выходе получаем число в типе string

Например вот так:

 

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

 Не могу из-за нехватки знаний подправить длл. Подскажите как правильно оформить код для передачи его в длл, и как грамотно его получить. А то сейчас в МТ5 моя длл не работает.

 Заранее спасибо за помощь. 

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

Подскажите также если не затруднит. Есть длл, в неё передается текстовое значение, на выходе получаем число в типе string

 Не могу из-за нехватки знаний подправить длл. Подскажите как правильно оформить код для передачи его в длл, и как грамотно его получить. А то сейчас в МТ5 моя длл не работает.

 Заранее спасибо за помощь. 

Перепроверил работу с возвратом строки из DLL и обнаружил ошибку в x64 (появившуюся после введения нескольких оптимизаций). Исправление войдёт в ближайший билд.

Если Вы работаете в x64, то пожалуйста подождите выпуска билда.

Единственное что могу добавить, следует помнить, что MQL5 работает с юникодными строками.

 
Проще говоря надо длл переписывать...
 
Хочется посчупать мощь длл , уж больно много про них говорят. Вопрос простой с чего начать. Что скачать , что почитать , на какой форум сходить, пунктов 5-6 плз. Очень много в этой жизни зависит от первичного пенделя .
 

Спасибо за статью. Воспользовался получилось.

Про путь подсказка отличная. Но !! 10 минут ушло на то, чтобы разобраться как правильно в VS2010 установить  путь к DLL.

У меня это оказалось так:

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries 

Советую путь скопировать из MetaEditor. 

Или указать в enviroment свой (не проверял).

И еще, как там у нас с многопоточностью?  

 
LEHayes:

...

Это все хорошо, что вы поднимаете эту тему, но никому не выгодно жаловаться на нее, если они не хотят представить решения или даже предложения о том, как достичь цели.

...

На самом деле, это хорошо, что 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, потому что там есть множество опций, с которыми можно поиграть - если вы знаете, как.

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

Говоря о вопросах, я надеюсь, что Ренат Фатхуллин, захочет ответить на вопрос pfx " Я серьезно, что это за заявление ", потому что Ренат написал в заключительной строке статьи "Спасибо за интерес! Я готов ответить на любые вопросы", или хотя бы изменение абзаца.
Замедления при вызове DLL не происходит.