HRESULT: 0x8007007E - nie można odnaleźć biblioteki

0

Cześć

Mam problem z aplikacją używającą zewnętrznych bibliotek. Problem polega na tym że program działa na niektórych systemach np. Na moim starym systemie pod Windows 7 profesional x64 program działa, na moim służbowym laptopie również windows professional x64 tez działa. Na komputerze kolegi (bliżej nieznany windows 7) nie działa. Po przeinstalowaniu systemu (na komputerze gdzie był win7 prof64) na windows Ultimate x64 program nie działa. zawsze komunikat jest taki sam (przy nie działającym programie):
"An unhandled exception of type 'System.DllNotFoundException' occurred in dotnetLibLAS.dll
Additional information: Nie można załadować biblioteki DLL 'liblas1.dll': Nie można odnaleźć określonego modułu. (Wyjątek od HRESULT: 0x8007007E)"

W zasadzie kopiując pliki programu włącznie z bibliotekami ( w tym liblas1.dll) na jednych komputerach działa na innych nie.
Biblioteka jest zawsze w folderze pliku exe.

Biblioteki kopiowane są zawsze te same.

Szukałem wielokrotnie w internecie rozwiązania - niestety nic przydatnego nie znalazłem.

Bardzo proszę o pomoc.

(PS. Progam jest pisany w C#, liblas1.dll jest w c++ a dotnetLibLAS.dll to translator)

0

Jeżeli ściągasz pliki z internetu albo udziału sieciowego, nawet jeżeli jest to archiwum ZIP, to po rozpakowaniu mają atrybut "niezbezpiecznego". Kliknij prawym na tym liblas1.dll i zobacz w we Właściwościach, czy nie trzeba zaznaczyć checkboksa "Odblokuj".

0

Oznacz we właściwościach projektu (dotnetliblas i exeka) platformę: x86 albo x64 zgodnie z bitowością tego liblas1.dll.
Nie może być AnyCPU.

0

Cześć
Rzeczywiście była możliwość "odblokowania" bibliotek, przedmiotowej jak i innych w programie w tym dotnet. Niestety to nie pomogło.
Zmieniałem też Platformę docelową z x64 na x86 i na Any CPU i tez nic nie dało. (tylko tyle że x64 nie odpalił się na 32 bitowym systemie co jest logiczne)
Obecnie siedzę przy 2 laptopach gdzie na jednym wszystko działa na na drugim wyskakuje brak biblioteki dll. przy tych samych plikach. :(
Jakieś inne pomysły?

1

Ja bym sprawdził zależności. Weź dependency walkera i otwórz w nim tą dllkę, co Ci zgłasza. Albo nawet samego execa. Nie wiem, czy walker da radę z .NET. Ale problem może być taki, że po prostu jakaś dllka korzysta wewnętrznie z jakiejś innej dllki i na niektórych kompach ta inna jest, na innych jej nie ma.

0

DZIĘKI WIELKIE!!! Tajemnica rozwiązana!
Brakowało bibliotek:
MSVCP71.DLL
MSVCR71.DLL
MSVCR90.DLL

Skopiowałem je z systemu gdzie program działa i na razie wrzuciłem do lokalizacji exe'ka.
Dzięki za narzędzie Dependency Walker.
Dziękuję wszystkim za Pomoc :)
Pozdrawiam

0

Nie do końca powinieneś tak robić. Powinieneś zainstalować redisty "Microsoft Visual c++ 2003 redistributable"

0

To jest jakiś WTF żeby DLL-ka wymagała jednocześnie C++ Runtime z wersji 2003 i 2008.

0

Dzięki za radę i podpowiedź ;)
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1