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

 
Кто-нибудь знает, как создать 64-битную DLL или позволить MQL5 загрузить 32-битную DLL? MQ5 не загружает мой тестовый скрипт, потому что моя DLL "не 64-битная". Спасибо.
 
Это хорошо thnx
 

Спасибо за статью. Полностью её повторил, но хочу несколько слов о то, с чем столкнулся я при реализации - эти вроде бы небольшие вещи чуть не оттолкнули от этого. Что же хотелось уточнить (использую 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.

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

 

Очень хороший учебник!

нужно ли создавать ссылки на файлы?

 

Мне нужно модифицировать Fann2MQl.dll (документирована на http://fann2mql.wordpress.com), потому что она не работает в MT5. Причина в том, что в MT5 вы не можете открывать файлы, где вам вздумается. Они должны быть открыты в двух местах по умолчанию (для прямого режима и режима тестирования).

Поэтому вопрос в том, какую функцию вызывать вместо fopen и какой заголовочный файл включать? Потому что кажется, что файлы должны открываться изнутри MT5. Любая попытка открыть файл в обход terminal.exe (как это происходит при использовании fopen из dll) автоматически перенаправляется либо в директорию установки, либо на рабочий стол, в зависимости от используемого режима запуска terminal.exe (нажатие на иконку или из командной строки с параметром /portable).

Эта переадресация еще и странная, потому что результирующее имя файла находится только в первом летере пути к нему.

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

Кто-нибудь знает, как создать 64-битную DLL или позволить MQL5 загрузить 32-битную DLL? MQ5 не загружает мой тестовый скрипт, потому что моя DLL "не 64-битная". Спасибо.

Это можно исправить, инструкции здесь: Solution Explorer -> Правый клик на решении -> Configuration Manager -> Active solution platform drop down menu -> select x64 -> click Close -> Rebuild Solution

Надеюсь, это поможет.

Удачи.

 

На 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. Многие разработчики не в курсе новых возможностей.

 
Renat:

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

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

 

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

Спасибо Ренат за ответ. Сейчас рынки довольно сложные и торговля забирает тебя как бы с головой и на совершенствование в технической области уж и времени почти не остается. Я действительно не понимаю отличий программ 32 и 64 бита. Вижу только что для пользователей создаются какие-то лишние проблеммы из-за этого. Все куда-то гонят и Майкрософт в том числе, хотят быстрее круче, а для пользователей сплошные проблеммы. Я не вижу вообще особого отличия по скорости на своем компьютере 32-х от 64-х битных. Правда у меня процессор стоит i7-4 - последний интеловский, может из-за этого. И смотрю что Майрософт стал ужимать C++. В последнем компиляторе даже установку возможности работы с формами в С++ убрали. И на вопрос почему? Отвечают что а почему бы Вам не попробовать на новом более совершенном С#. Так что если Вы смотрите в перспективу, Вам это тоже нужно учитывать.
 
ANG3110:


И смотрю что Майрософт стал ужимать C++. В последнем компиляторе даже установку возможности работы с формами в С++ убрали. И на вопрос почему? Отвечают что а почему бы Вам не попробовать на новом более совершенном С#. Так что если Вы смотрите в перспективу, Вам это тоже нужно учитывать.

Ну Майкрософт известный убийца технологий, а в последнее время и себе могилу за могилой копает.

Зачем ему мешать - пусть сам в свою яму падает. Это так образно, дабы не тратить время на технические детали. Кто желает деталей - их тысячи есть в интернете. После "более совершенного C#" у меня других слов нет.