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

 
avoitenko:

Обьявление функции DLL

Вызов функции DLL

Точно! Я именно так и сделал. Спасибо!
 

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

Я про это

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 свой (не проверял).

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

 

Спасибо за статью. Полностью её повторил, но хочу несколько слов о то, с чем столкнулся я при реализации - эти вроде бы небольшие вещи чуть не оттолкнули от этого. Что же хотелось уточнить (использую VS2010 + MT5 (32 бит) build 756 + Win 7 Максимальная x64):

  1. Как не пытался соединить на платформе х64 так и не получилось - причиной как я понял явилось неявная зависимость создаваемой DLL от стандартных библиотек Windows, которые почему то подгружали библиотеки х86 - это проблема не MQL5, но всё же стоит об этом сказать. Вышел из этого положения установив МТ5 32 бит - делается это при помощи командной строки "папка с установщиком"\mt5setup.exe /32. Ну и соответственно использует DLL х86. Поэтому рекомендую использовать только х86 - по крайней мере на начальном этапе.
  2. MT5 никак не мог найти подключаемую DLL. В статье написано, что размещайте DLL в папке Libraries терминала, но терминал при этом всё равно её не видит. Решение следующее: не важно где будет лежать DLL, главное чтобы это место было прописано в переменных средах системы. Как это делается поможет Google.

В остальном очень даже очень не плохая статья ... Респект!

 

На 64-х битном МТ5 пример не работает. Терминал отписывается, что это 32-х битная DLL и не подключает ее. Но под Win32 (как в данном примере и во всех других примерах - типа на Дельфи) - все же DLL 32-х битные. Приходится как в предыдущем посте деинсталировать 64-х битную версию терминала и ставить 32-х битную. Еще надо знать как это сделать, так как 64-х битная версия ставится насильно. Получается что МТ5 64 бита вообще мертвый терминал, не понятно зачем выпущенный. Уважаемые разработчики, если это возможно, сделайте пожалуйста возможность подключения к МТ5 64 бита, 32-х битных DLL.

 А если это технически невозможно или сложно, тогда так и пишите про подводные камни, что эта версия не будет работать с 32-х битными DLL, а то пользователи мучаются и не могут понять в чем дело. И напишите открыто, что папка Libraries находится не в директориях самого терминала, а фиг знает где, и без опыта не найдете, даже не пытайтесь. И кстати в этом тайном месте находятся и все индикаторы и эксперты, так что установив МТ5 вы можете про них забыть, - если Вы не знаете что все это находится в скрытой папке  C:\Users\пп\AppData\Roaming... . А то пользователь думает что устанавливает нормально написанную программу, а это обман. 

 

Вам бы технический уровень подтянуть.

Для 64 битных программ нужны  64 битные библиотеки и никак в разумных рамках не подключить 32 битные. Чтобы установить 32 битную версию, инсталлер надо запустить с ключом /32

 

Статью я перепишу и дополню крутыми штуками, что давно уже внедрены в Метаедитор и платформы МТ4 и МТ5. Многие разработчики не в курсе новых возможностей.

Причина обращения: