Mam program, który chcę rozpowszechniać za pośrednictwem mojego serwera WWW z Debianem.
Wysłałem więc moje pliki - zawierające biblioteki DLL - na serwer. Po tym, jak pozwoliłem im pobrać się za pośrednictwem mojej aplikacji aktualizującej, wystąpił błąd. Próbowałem je więc pobrać, tak jak je wgrałem: Via Eclipse IDE. Ale błąd wystąpił również:
Tytuł okna błędu:
Main.exe - Zły obraz
Błąd:
Blabla.dll albo nie jest przeznaczony do uruchamiania w systemie Windows, albo zawiera błąd […] Status błędu 0xc0000130.
Zastanawiam się więc, co powoduje uszkodzenie biblioteki DLL. Czy ma to związek z Eclipse lub Debianem?
EDYTOWAĆ Sumy kontrolne md5 oryginału, przesłany plik i pobrany plik są różne.
EDIT2 Wydaje się, że jest to problem między stroną kodową wybraną w Zaćmieniu, która jest UTF-8. Przetestuję go z cp1250 (szybki test zadziałał do tej pory, ale moja aplikacja uległa awarii) jutro.
EDIT3 Ponadto mój aktualizator nie działał poprawnie, interpretując pobrane pliki jako pliki tekstowe.
Odpowiedzi:
Jednym z typowych powodów może być niepełne przesyłanie. Sprawdź rozmiar przesłanych bibliotek DLL, ponownie załaduj, jeśli rozmiar jest mniejszy niż oczekiwano.
Innym powodem jest konwersja plików między Windows i UNIX, która uszkadza pliki binarne, gdy są omyłkowo przesyłane w trybie tekstowym. Nie sądzę, żeby tak było (ponieważ wydaje się, że używasz HTTP, a nie FTP), ale warto to sprawdzić.
W przeciwnym razie będziesz musiał porównać swoją oryginalną bibliotekę DLL skompilowaną przez Eclipse z biblioteką DLL pobraną z serwera WWW i opublikować różnice tutaj w celu dalszej analizy.
źródło