Скачать MetaTrader 5

Проблема при работе с DLL

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Pastushak
71246
Vladimir Pastushak 2012.10.04 11:30 

Суть в следующем советник использует для работы DLL библиотеку

На домашнем пк все работает без проблем в разных терминалах

на других компах не хочет ....

Было проверено 3 машины, Библиотека помещается в каталог C:\Program Files (x86)\Alpari NZ MT4\experts\libraries

советники в каталог C:\Program Files (x86)\Alpari NZ MT4\experts

Галочки на разрешить вызов DLL стоят

Вобщем терминалы настроены правильно

При тестировании выпадает ошибка : cannot load libray "Biblioteka.dll" ( error 126 )

В чем проблема и как исправить эту ошибку из-за чего она возникает ???????

MetaQuotes
Админ
25027
Renat Fatkhullin 2012.10.04 11:39  

126 ошибка WinAPI означает, что не найден модуль в LoadLibrary.

Скорее всего Ваша библиотека имеет связи с другими библиотеками, которых нет на других компьютерах.

Чтобы понять чего не хватает, запустите depends.exe biblioteka.dll на тех компьютерах. depends.exe (Dependancy Walker) можете найти в интернете или возьмите в аттаче.

Файлы:
depends.zip 307 kb
Stanislav Korotky
18181
Stanislav Korotky 2012.10.04 11:39  
Смотреть зависимости этой библиотеки. Можно по-простому в режиме просмотра двоичного файла библиотеки поискать в ней ".dll" и убедиться, что все найденные библиотеки присутствуют. Если нет - скопировать с домашнего компа недостающие. В зависимости от того, в чем библиотека собиралась могут быть зависимости и от файлов с другими расширениями, типа ".bpl" Борланда.
Vladimir Pastushak
71246
Vladimir Pastushak 2012.10.04 12:04  
marketeer:
Смотреть зависимости этой библиотеки. Можно по-простому в режиме просмотра двоичного файла библиотеки поискать в ней ".dll" и убедиться, что все найденные библиотеки присутствуют. Если нет - скопировать с домашнего компа недостающие. В зависимости от того, в чем библиотека собиралась могут быть зависимости и от файлов с другими расширениями, типа ".bpl" Борланда.

Депендс писал что не хватает библиотеки msvcr100.dll но после её установки 

 

я понимаю что данная библиотека только для 64х битной системы а в 32 битной она не работает  !!!!!

Как быть , Что делать , ЗАКИПАЮ ....... 

ошибка изменилась на 193 

MetaQuotes
Админ
25027
Renat Fatkhullin 2012.10.04 12:15  
VOLDEMAR:

Депендс писал что не хватает библиотеки msvcr100.dll но после её установки 

 

я понимаю что данная библиотека только для 64х битной системы а в 32 битной она не работает  !!!!!

Как быть , Что делать , ЗАКИПАЮ ....... 

Когда пишите DLL, то уж такие простые и базовые вещи как контроль связанности библиотек, надо знать.

Возьмите с microsoft.com пакет "Microsoft Visual C++ 10 x86 Redistributable" и инсталлируйте на целевых компьютерах. Ранее скопированную 64 битную библиотеку удалите.

А DLL надо собирать в режиме статической линковки, а не в режиме динамических DLL. Посмотрите на наш софт - он никогда никаких чужих/системных DLL не таскает за собой.

Vladimir Pastushak
71246
Vladimir Pastushak 2012.10.04 12:19  
Renat:

Когда пишите DLL, то уж такие простые и базовые вещи как контроль связанности библиотек, надо знать.

Возьмите с microsoft.com пакет "Microsoft Visual C++ 10 x86 Redistributable" и инсталлируйте на целевых компьютерах. Ранее скопированную 64 битную библиотеку удалите.

А DLL надо собирать в режиме статической линковки, а не в режиме динамических DLL. Посмотрите на наш софт - он никогда никаких чужих/системных DLL не таскает за собой.

Ок ! А можно в деталях ???  Удалю 64 битную библиотеку что дальше ???  Что это за Microsoft Visual C++ 10 x86 Redistributable среда для написания или что то другое ????
Andrey Voytenko
23273
Andrey Voytenko 2012.10.04 12:21  
я понимаю что данная библиотека только для 64х битной системы...

Вот Вам для x86: http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe

А вообще-то, лучше, если есть исходники, пересоберите ваш проект без использования MSVCR100.dll

Vladimir Pastushak
71246
Vladimir Pastushak 2012.10.04 12:24  
avoitenko:

Вот вам для x86: http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe

А вообще-то , лучше пересоберите ваш проект без использования MSVCR100.dll

Пробовал не помогает !!!!

Эх парни Вас почитаешь вроде просто пишите начинаешь что то делать и останавливаешься ....... 

А вообще-то , лучше пересоберите ваш проект без использования MSVCR100.dll   Как ???? 

Andrey Voytenko
23273
Andrey Voytenko 2012.10.04 12:30  
... без использования MSVCR100.dll. Как ???? 

Вот так: выбрать либо /MT, либо /MTd.

 


Vladimir Pastushak
71246
Vladimir Pastushak 2012.10.04 12:49  
avoitenko:

Вот так: выбрать либо /MT, либо /MTd.

 


Пробую !!!

А что значит  "А DLL надо собирать в режиме статической линковки, а не в режиме динамических DLL" ?????

o_o
Модератор
23862
o_o 2012.10.04 12:50  
VOLDEMAR:

Пробую !!!

А что значит  "А DLL надо собирать в режиме статической линковки, а не в режиме динамических DLL" ?????

это значит, что в результате вам не нужно таскать за вашим exe никаких dll

все соберется в один exe

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