Скачать MetaTrader 5

Ошибка "cannot load library (error 126)" при использовании библиотеки - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MQL5 Cloud Network это сеть распределенных вычислений. Оцени сам!
Сергей
4
Сергей 2013.07.05 13:36  
У меня аналогичная проблема при подключении библиотеки с зависимостями. Хотелось бы услышать мнение гуру MQL по этому поводу =)
Комбинатор
15932
Комбинатор 2013.07.05 13:41  

Если проблема в зависимостях -- возможно ответ отсюда поможет зело:

http://stackoverflow.com/questions/14361992/dll-load-library-error-code-126

Сергей
4
Сергей 2013.07.05 16:41  
TheXpert:

Если проблема в зависимостях -- возможно ответ отсюда поможет зело:

http://stackoverflow.com/questions/14361992/dll-load-library-error-code-126

Спасибо, попробую

Alexandr
27
Alexandr 2013.07.05 20:13  

Проблема решена. Разобрался. Спасибо TheXpert за консультирование.

Во-первых, не все можно слинковать статически. Если используемый ресурс поставляется только с DLL (а не с *.lib-файлами) невозможно слинковать свою DLL-ку с используемыми ресурсами полностью статически. Что важно, при этом компилятор не ругается. То есть, при включении режима Runtime Library: Multi-threaded (/MT) компилятор загружает в итоговую DLL-ку только лишь по возможности и это совершенно не гарантирует, что в итоге мы получим независимую DLL.

Во-вторых, очень важно использовать грамотный инструментарий для отслеживания всех вызовов. Dependency Walker лажает, иногда сообщает о проблемах когда их нету или наоборот не замечает трудности когда они на самом деле имеют место. Идеальный вариант отладки: Process Monitor. Тулзовина позволяет просматривать абсолютно все действия того или инного процесса. Другими словами, мы видим все возможные обращения MT4 к тем или инным файлам, видим результаты этих запросов, видим пути по которым ищутся файлы. В результате оказалось, что отсутствовали абсолютно странные библиотеки о который умалчивал Dependency Walker.

 В-третьих, терминал ищет используемые советником DLL-ки в каталоге Terminal_folder\experts\libraries\, а вот если DLL-ка тянет за собой что-то другое, то эти либы должны находиться либо в системных каталогах (system/system32), либо же в одном каталоге вместе с бинарем MT4 (terminal.exe).

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