mql4 dll c++ - страница 2

 
Scriptong:

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

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

   Scriptong     

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

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

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

 

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

 
sprite:

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

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

Есть выход ?

Или вход !

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

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


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

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

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

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