У меня есть exe, который зависит от libeay32.dll. Оба скомпилированы для 32 бит.
Я скопировал exe-файл в C: \ Program files (x86) \ app \ bin и dll в C: \ Program files (x86) \ app \ lib.
Чтобы обеспечить правильную работу, я добавил C: \ Program Files (x86) \ app \ lib в путь.
В Windows 7 64 бит, когда я выполняю exe, я получаю ошибку libeay32.dll не найден.
Используя 32-битное средство обхода зависимостей, библиотека правильно расположена в C: \ Program files (x86) \ app \ lib.
Используя sysinternal Process Explorer, приложение выполняется правильно.
Использование cmd также работает.
Используя средство обхода зависимостей для 64 бит, я могу увидеть недостающие библиотеки.
Копирование двух файлов вместе или dll в syswow64 также отлично работает.
Если приложение было скомпилировано для 32 бит ...
Почему Windows не ищет 32-битные библиотеки?
Почему библиотеки не разрешены, если каталог уже находится в пути?
Я предполагаю, что w7 игнорирует путь, но в соответствии с этим:
http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx
это не должно!
Почему я не могу запустить свой exe с зависимостями, расположенными на пути?
Должен ли я зарегистрировать библиотеку или что-то?
Любые идеи будут высоко оценены.
EDIT:
Программа корректно запускается / выполняется, когда выполняется из меню Пуск-> Программа, но не напрямую в .exe ... wtf?
Использование procmon, похоже, пытается открыть (обратите внимание на отсутствие ""):
"C: \ Program Files (x86) \ myapp \ Third-Party \ openssl \ LIBEAY32.dll"
но в пути это правильно (перепроверено: "C: \ Program Files (x86) \ myapp \ Third-Party \ openssl")
ОТВЕТ ?:
Есть ли известный сценарий / ошибка, при которой установка "C: \ Program Files (x86)" по пути, ведущие окна пытаются загрузить "C: \ Program Files (x86)" вместо ???? (см. используя procmon без ЛЮБОГО фильтра)
Ошибка Windows 7 x64?