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

 

Суть в следующем советник использует для работы 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 )

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

 

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

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

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

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

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

 

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

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

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

 
VOLDEMAR:

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

 

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

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

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

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

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

 
Renat:

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

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

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

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

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

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

 
avoitenko:

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

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

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

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

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

 
... без использования MSVCR100.dll. Как ???? 

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

 


 
avoitenko:

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

 


Пробую !!!

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

 
VOLDEMAR:

Пробую !!!

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

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

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