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

 
denkir:
Renat, огромное спасибо за статью! Очень интересно и познавательно. К сожалению у меня не получилось применить скрипт MQL5DLL Test.mq5. Делал всё как написано в статье. Но когда запускал скрипт, MT 5 просто закрывался как подкошенный. Не знаю в чём проблема. Может из-за оси? У меня MS Vista x64. Просьба подсказать пути решения :-)

Прочтите все статью еще раз, пожалуйста.

Там как раз есть место про генерацию ошибки (запись в нулевые адреса) внутри DLL с последующим отловом этой ошибки терминалом без падения оного. Нужно закомментировать вызов метода fnCrashTest.

Сегодня проверю этот код на Vista x64 - может это наша ошибка.

 
Renat писал(а)  :

Прочтите все статью еще раз, пожалуйста.

Там как раз есть место про генерацию ошибки (запись в нулевые адреса) внутри DLL с последующим отловом этой ошибки терминалом без падения оного. Нужно закомментировать вызов метода fnCrashTest.

Сегодня проверю этот код на Vista x64 - может это наша ошибка.

Да я всё внимательно прочитал и не один раз :-))

Забыл сказать, что функцию fnCrashTest(int arr) в скрипте MQL5DLL Test.mq5 я закомментировал. И всё равно получаю краш. :-(

Вот так это выглядит. Или нужно в коде dll  закомментировать функцию fnCrashTest(int arr)?

=========================
#import "MQL5DLLSamples.dll"
int  fnCalculateSpeed(int &res1,double &res2);
void fnFillArray(int &arr[],int arr_size);
void fnReplaceString(string text,string from,string to);
//void fnCrashTest(int arr);
#import
=========================

//fnCrashTest(NULL);
//Print("Этого текста не увидите!");

 

1) какая версия терминала 32 или 64 битная?

2) какая версия dll 32 или 64 битная? 

 
mql5 писал(а)  :

1) какая версия терминала 32 или 64 битная?

2) какая версия dll 32 или 64 битная? 

1) а что есть выбор? По-моему отсюда только x86 скачивается...

2) dll 32 

 

Переустановка MT5 дала следующий результат. При запуске скрипта появляется такая инфа в логе Cannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'

На всякий случай прикладываю  снимок библиотеки от Dependency Walker. 

  

 
denkir:

Переустановка MT5 дала следующий результат. При запуске скрипта появляется такая инфа в логе Cannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'

На всякий случай прикладываю  снимок библиотеки от Dependency Walker. 

  

А номер билда переустановленного терминала какой?
 
stringo:
А номер билда переустановленного терминала какой?
По всей видимости старый, явно не последний 240 билд.
 
Renat писал(а)  :
По всей видимости старый, явно не последний 240 билд.

Да, точно не последний...

После обновления до 240-го бильда первый запуск скрипта отработал нормально. Я обрадовался. Но последующие запуски привели только к крашу. Параллельно работал MT 4.

 

 

После перезагрузки вроде всё заработало! :-))

Закомментировал функцию fnCrashTest(int arr) 

 

 

Спасибо всем, кто помогал! 

 
В общем, мне не удалось повысить скорость вычислений с помощью dll более чем в 2.5 раза. Это говорит о высокой скорости MQL5, и для большинства трейдерских задач нет смысла гемороится с dll, за исключением случаев, когда необходимо защитить код, и когда необходимы "тяжёлые" вычисления.