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

 
:) 
 

Здравствуйте,

Не работает DLL, созданная Microsoft Visual Studio 2013 Express edition, см. вложение.

Похоже, она не находит библиотеку MSVCR120D_APP.DLL, а также возникает проблема с KERNEL_32.

Кто-нибудь сталкивался с подобной проблемой? Как я могу обойти это, пожалуйста?

Спасибо

 

Поддерживает ли mql5 импорт dll, включающих функции обратного вызова?

например:

Есть dll с именем tclient.dll, которая включает в себя функцию ниже:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

Тогда как я должен объявить и вызвать sub_tick в mql5?

#import "tclient.dll"

//как объявить функцию "sub_tick"

#import

void ontick(Tick &ticks[])

{}

int OnInit()

{

//как вызвать функцию "sub_tick"?

}

 
Коллеги, как в VS подключить библиотеки МТ? что бы у меня студия не подчёркивала string, datetime...
 

Привет

Я хотел бы узнать, не могли бы вы немного помочь мне с взаимодействием Mt5 и Matlab. Я проделал все предложенные вами уроки. Единственная проблема заключается в том, что скрипт успешно загружается и успешно удаляется в логах, но не отображает ничего из того, что я хочу вывести. Что я делаю не так?

Большое спасибо за помощь

Файлы:
Capture.PNG  20 kb
 

Я только что прошел через этот учебник, но используя новый VC 14 (2015) ... сначала я получил сообщение в журнале : "невозможно загрузить dll" без причины, но потом я понял, что настройки решения собрали win32 dll ... в проводнике решения, правый клик на решении, нажмите на configuratuion manager.

Там можно изменить платформу на x64. После пересборки новая сгенерированная dll загрузилась, и я смог вызвать свою демо-функцию...


Ура... спасибо за эту статью!


Филип

 
Renat Fatkhullin:

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

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

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

А есть пример для создания 64 битных dll для 64 битной версии терминала? Да и про "крутые штуки" интересно узнать)
 

Все оказалось просто!

Установил бесплатную Visual Studio Community 2015 (именно Community, т.к. в ней есть поддержка х64, в отличие от Express) У платных версий х64 конечно тоже есть, но я рассматривал бесплатные варианты. Web Installer у меня выдал ошибку, поэтому установил из образа ISO. При установке выберите "Выборочную" установку и отметьте С++ (по умолчанию он не устанавливается).

Далее все сделал, как в статье, т.е. создал Win32 проект. Сделал сборку, которую х64 терминал отказался принять (как и ожидалось).

Затем во вкладке "Сборка" -> "Диспетчер конфигураций" изменил платформу на х64, (можно так же изменить "Активная платформа решения" на х64)

    

Снова сделал сборку. Новая dll оказалась в папке \x64\Debug (окончательная сборка будет в x64\Release\) , которую х64 терминал без проблем обработал, выдав следующее:

19:29:01.883    dll_test (EURUSD.e,H1)    Time 16 msec, int: -752584127 double: 17247836076609.0
19:29:01.883    dll_test (EURUSD.e,H1)    Array: 0 1 2 3 4 5 6 7 8 9
19:29:01.883    dll_test (EURUSD.e,H1)    Replace: A quick brown cat jumps over the lazy dog
19:29:01.886    dll_test (EURUSD.e,H1)    Access violation at 0x000007FEFB0F176F write to 0x0000000000000000 in '...\MQL5\Libraries\ConsoleApplication1.dll'
и дальнейшее описание перехваченной ошибки
Т.е. все работает!!!

Downloads | Visual Studio
Downloads | Visual Studio
  • www.visualstudio.com
Visual Studio Community 2015 with Update 1 - Free Visual Studio Community 2015 with Update 1 is a free, fully featured, and extensible IDE for individual developers, open source projects, academic research, education, and small professional teams. Create applications for Windows, Android, and iOS as well as web applications and cloud services...
 

Примечание:

при переносе на др. компьютер ДЛЛ отказалась работать, т.к. использовала компоненты из самой VS. Проблема решается в Проект -> Свойства -> Использование MFC, установить в "Использовать MFC в статической библиотеке". После этого пересобрать и перекомпилировать ДЛЛ

Найдено на форуме:

Можно проводить оптимизацию советников с DLL не только на локальном компьютере, но и в локальной сети. Для этого на компьютерах сети нужно добавить ключ /dlls в реестр для агентов тестирования. Вызов редактора реестра: regedit

Renat Fatkhullin:

У существующих инсталлированных агентов можно поменять команды запуска только через реестр в ветках HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MetaTester-XXXX

Просто кликните на каждом параметре ImagePath и допишите в конец строки /dlls


 

Сейчас занимаюсь привязкой ZeroMQ к MT4 через DLL.

Очень плохо как-то. Терминал крошится сплошь и рядом при запуске индикатора или при выгрузке. Причем это не проявляется в режиме отладки, так что вообще не понятно, что происходит.