Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликовал программу в Маркете? Опубликуй ее и в блоге - виджет поможет!
Apelsin
395
Apelsin 2016.07.08 12:02  
Scriptong:

Так ведь в функции fire ничего не происходит. Во-первых, массив outarray передан по значениям, а не по указателю, т. е. что бы там не записывалось в массив outarray, все это остается внутри функции. Во-вторых, даже если бы и был массив передан правильно, внутри функции fire происходит запись только во второй элемент outarray, а на выходе (в MQL4) читается шестой элемент.

И вообще непонятно, зачем нужен массив inarray. 

   Scriptong     

  Спасибо за комент , отрезвил )

  В этот массив будут передаваться внешние параметры  из советника MQL4 , например значения индикаторов.

  Их нужно будет  обработать внутри DLL и передать результат советнику .

Apelsin
395
Apelsin 2016.07.08 12:11  

Да , и еще !   Компилятор , который мне порекомендовали :

Ihor Herasko
8640
Ihor Herasko 2016.07.09 17:55  
sprite:

DLL "собираю" на 64 р машине.

Похоже МТ4 не может работать с 64 р версией DLL ?

Есть выход ?

Или вход !

МТ всегда был 32-хбитным. Таковым, по заверению разработчиков, и останется. Поэтому да, нужно использовать только 32-хбитные DLL.
Ihor Herasko
8640
Ihor Herasko 2016.07.09 18:01  
sprite:

Новая версия попытки :


Функция Fire для правильного заполнения массива должна быть такой:

 extern "C" void __declspec(dllexport) __stdcall Fire(  double  *outarray, int arraySize )
{
  outarray++;
  *outarray = 3;   // Запись в первый элемент массива
}

В параметре arraySize желательно передать размер массива outarray, чтобы внутри функции Fire можно было контролировать момент выхода за пределы массива.

/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий