Слушайте, я ни разу не пытался работать с .dll и то понимаю, что если в .dll функция работы с массивом, то и подавать в неё надо массив.
А если вам нужно обработать константное значение, то в .dll должна быть соответствующая функция…
Доброго времени суток.
Как использовать DLL в индикаторе? Если в индикаторе создаю массив, передаю его в DLL, возвращаю результат, всё OK.
Если пробую передать константные переменные, то возвращается что-то другое.
DLL:
Индикатор:
Результат:
напечатайте рядом
PrintFormat("%f + %f = %f",close[0],close[1],close[0]+close[1]);
всё должно встать на свои места ;-)
PS/ индексация массива - не как в таймсерии, close[0] - самое-самое старое значение. Там вообще может быть EMPTY_VALUE или прочий мусор
В DLL передается ведь не ссылка на массив, а указатель. Значит, и работать с ним нужно как с указателем:
extern "C" __declspec(dllexport) double Sum(const int rates_total, const double *close) { double *pfClose0 = close; double *pfClose1 = ++close; return *pfClose0 + *pfClose1; }
Правда, не уверен насчет разыменования указателя. Возможно, все-таки const нужно убрать.
В DLL передается ведь не ссылка на массив, а указатель. Значит, и работать с ним нужно как с указателем:
Правда, не уверен насчет разыменования указателя. Возможно, все-таки const нужно убрать.
в С можно по всякому..можно как с массивом, можно как с указателем. получил адрес и вертись как хочешь :-)
можно даже так:
return 0[close]+1[close]; // ога, так можно
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток.
Как использовать DLL в индикаторе? Если в индикаторе создаю массив, передаю его в DLL, возвращаю результат, всё OK.
Если пробую передать константные переменные, то возвращается что-то другое.
DLL:
Индикатор:
Результат: