2011-09-06 12 views
5

Mam exe, który zależy od libeay32.dll. Oba skompilowane dla 32 bitów.Windows 7 64 bity niepoprawna ścieżka podczas ładowania biblioteki 32 bitów dla 32 bitów exe

Skopiowałem exe do C: \ Program files (x86) \ app \ bin a plik DLL do C: \ Program files (x86) \ app \ lib. Aby zapewnić poprawne działanie, dodałem do ścieżki C: \ Program files (x86) \ app \ lib.

W systemie Windows 7 64 bity, gdy wykonuję exe, mam błąd libeay32.dll nie znaleziono.

Korzystając z chodzaka zależności dla 32 bitów, biblioteka znajduje się w C: \ Program files (x86) \ app \ lib. Przy użyciu sysinternal process explorer aplikacja jest poprawnie uruchamiana. Używanie cmd też działa. Korzystanie z opiekuna zależności dla 64 bitów, widzę brakujące biblioteki. Kopiowanie dwóch plików toghether lub dll do syswow64 również działa idealnie.

Jeśli aplikacja została opracowana dla 32 bitów ...

Dlaczego existing oknami dla 32 bitów bibliotek? Dlaczego biblioteki nie zostały rozwiązane, jeśli katalog jest już na ścieżce?

Domyślam się, że w7 ignoruje ścieżkę, ale zgodnie z tym: http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx to nie powinno !.

Dlaczego nie mogę uruchomić mojego exe z zależnościami znajdującymi się na ścieżce? Czy powinienem zarejestrować bibliotekę?

Wszelkie pomysły będą mile widziane.

EDIT:

Program jej poprawnie uruchomiona/wykonywane po zakończeniu rozruchu z Menu-> programu, ale nie bezpośrednio na .exe ... wtf?

Korzystanie procmon wydaje się być próbuje otworzyć (uwaga na brak "„): "C: \ Program Files (x86) \ myapp \ Third-Party \ OpenSSL \ libeay32.dll" ale na drodze jego prawidłowe (ponownie sprawdzić: "C: \ Program Files (x86) \ myapp \ Third-Party \ OpenSSL")

ODPOWIEDŹ ?: istnieje scenariusz wiem/bug gdzie ustawienie „C: \ Program Files (x86) "na ścieżce, ołowiane okna próbują załadować" C: \ Program Files (x86) "zamiast tego ???? (zobacz użycie procmon bez KAŻDEGO filtra)

Windows 7 x64 błąd?

+0

O ile mi wiadomo, PATH jest konsultowany tylko w celu zlokalizowania EXECUTABLE. Lib lub DLL nie może wykonywać samodzielnie - może obsługiwać tylko inny plik wykonywalny. – Arun

+2

@Arun - Windows używa ścieżki do zlokalizowania bibliotek DLL. Zobacz http://msdn.microsoft.com/en-us/library/7d83bc18.aspx – shf301

+0

Moja zła, odbieram. Tak. Bardzo dziękuję za poprawienie mojego błędu! – Arun

Odpowiedz

0

Możesz skopiować bibliotekę do tego samego katalogu, ponieważ zawsze najpierw sprawdza. Jeśli zostanie znaleziony, zostanie użyty. W systemach Windows 64-bitowych możesz (nie próbowałem) przenieść także biblioteki do folderu SystemWOW64, w którym są przechowywane wersje 32-bitowe, ale poleciłbym pierwszą wersję.

Powiązane problemy