PDAclub.pl - Forum użytkowników technologii mobilnych
Samodzielne Nawigacje GPS - PNA / PND (Windows CE) => Nawigacje PNA / PND - Ogólnie => Wątek zaczęty przez: piotreczek w Grudzień 21, 2009, 15:10:02
-
Witam.
Mam Mantę 070 z CE5.0. Chciałem uruchomić na niej program pisany pod WM ale wywala jakieś błędy (z góry mówię że nie chodzi o nawigację). Jak mogę to uruchomić bo na innym forum czytałem że WM to okrojona wersja CE więc teoretycznie nie powinno być problemów, a z różnych wypowiedzi wnioskuję że jest to możliwe tylko nigdzie nie znalazłem jak to zrobić.
-
Wm to nie okrojony CE - to zupełnie coś innego. Metoda na uruchamianie programów z WM na CE jest zawsze taka sama - sprawdzenie powiązania programu z bibliotekami (dll), co można zrobić na PNA (executabilitycheck), lub na PC (Dependency Walker). I dogranie tych, których programowi brakuje.
-
I dogranie tych, których programowi brakuje.
częściej nadpisanie importów, aby nie korzystał z żadnej biblioteki dostarczanej z wince (w całym ciągu zależności), a tylko z naszych podstawionych. Oczywiście wszystko zależy od konkretnego przypadku.
-
A czy konieczne jest też wgrywanie czegoś takiego jak NET Compact Framework ktoś gdzieś pisał że po wgraniu tego powinno działać
-
Zależ od aplikacji i urządzenia. Z NET akurat jest ten problem, że ciężko go "dograć", bo katalog Windows w nawigacjach nie jest trwały, a NET nie lubi być instalowany gdzie indziej. Napisz po prostu, jaki program chcesz uruchomić?
-
to nie jest żaden z oficjalnych programów. pisała go osoba prywatna więc nazwa i tak nic nie da. acha a te biblioteki brakujące to wrzucam do katalogu z aplikacją na karcie tak?
-
Tak, najlepiej do folderu z aplikacją.
-
a gdzie mogę znaleźć te brakujące biblioteki? Dependency pokazuje: AYGSHELL.DLL, COMMCTRL.DLL, COREDLL.DLL, NOTE_PRJ.DLL, IESHIMS.DLL
-
AYGSHELL.DLL, NOTE_PRJ.DLL, IESHIMS.DLL tych na pewno nie masz, Aygshell może nawet być, ale nie koniecznie w "działającej" wersji. Nie ma jakiegoś dobrego źródła bibliotek do wszystkich zastosowań. Po prostu trzeba dużo szukać. Sporo wersji AYGshell'a było na stronie o Izemize o HPC.
-
niby poznajdowałem te biblioteki i dependency nie pokazuje już braku a pod CE komunikat że aplikacja nie jest poprawna dla CE. Co coś może być nie tak? jedyne co jeszcze ddependecny pokazuje to:
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
chciałem jeszcze sprawdzić pod WCE programem executabilitycheck ale on po uruchomieniu natychmiast się zamyka
-
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
To jest główny problem. Jeśli testujesz pod Dependency walkerem, to musisz doprowadzić do takiej sytuacji, że sygnalizowany jest WYŁĄCZNIE błąd:
Error: Modules with different CPU types were found
Jeśli masz jakikolwiek inny, to aplikacja się nie uruchomi. Druga uwaga - to, że jakaś biblioteka na PNA jest (jak coredll na przykład) nie znaczy, że ma odpowiednią wersję. Dlatego najpewniejsza metoda jest taka:
Zmieniasz wszystkie odwołania do DLL'i w podstawowej aplikacji (czyli exeku), zamieniając np. ostatnią literkę na cyfrę 2. Następnie wgrywasz do katalogu z aplikacją po kolei wszystkie wymagane DLL'ki pod zmienionymi nazwami (tak jak w odwołaniach) i uzupełniasz je aż nie znikną wszystkie błędy oprócz tego z different CPU. Dopiero w tym momencie masz szansę odpalić aplikację na PNA.
-
czyli najlepiej sprawdzać pod PNA? wtedy pokaże odrazu czy biblioteka jest we właściwej wersji? a jeśli tak to jak odpalić executabilitycheck bo mi się uruchamia tylko na sekundę i znika. Gdzieś ktoś pisał że pomaga uruchamianie przez start -> run. tylko że ja nie mam psaka start windows bo odblokowałem mantę metodą bezinwazyjną czyli odpowiedni katalog na karcie. czy jest jakaś aplikacja która wyciągnie pasek start do wierzchu?
-
Niestety rzecz w tym, że execheck nie działa prawidłowo na Win CE 5.0 . Uruchomić go oczywiście można, ale ponieważ przygotowany był pod CE 4.2, to sygnalizuje WSZYSTKIE biblioteki jako "nie działające". To podważa właściwie sens zastosowana exechecka na PNA z ce 5.0. Można go ewentualnie użyć tylko do zmiany powiązań z DLL'kami. Najlepiej sprawdza się dependency walker.
-
najpewniejsza metoda jest taka:
Zmieniasz wszystkie odwołania do DLL'i w podstawowej aplikacji (czyli exeku), zamieniając np. ostatnią literkę na cyfrę 2. Następnie wgrywasz do katalogu z aplikacją po kolei wszystkie wymagane DLL'ki pod zmienionymi nazwami (tak jak w odwołaniach) i uzupełniasz je aż nie znikną wszystkie błędy oprócz tego z different CPU. Dopiero w tym momencie masz szansę odpalić aplikację na PNA.
rozumiem że chodzi o zmianę nazw wszystkich bibliotek związanych z plikiem *.exe nie tylko tych które dogrywałem (jest tego od groma :S ). Jeśli je pozmieniam to nie będzie miało znaczenia w jakiej są wersji byle miały tą samą nazwę co w *.exe?
P.S.
A czy ma znaczenie to że parametr PI jest na czerwono? czy znaczy to nie właściwą wersję biblioteki? link do skrina: http://piotreczekna.wrzuta.pl/obraz/3BOhppTteDR/bez_tytulu (http://piotreczekna.wrzuta.pl/obraz/3BOhppTteDR/bez_tytulu)
-
Tak, to właśnie oznacza, że wersja DLL'a jest zła. Niestety wersji jest mnóstwo i trzeba wykazać sporo "zacięcia" by odpalić niektóre programy. Jeśli chodzi o podmianę nazw - żeby mieć 100% pewność, że aplikacja korzysta z Twoich dodanych DLL'i to trzeba zmienić wszystkie odwołania w pliku exe aplikacji (np hexedytorem), i podstawiać wszystkie biblioteki pod zmienionym nazwami. Tak jak już pisałem MUSISZ doprowadzić do sytuacji, w której Dependency walker wyświetla tylko błąd different CPU.
-
OK dzięki za wsparcie. Już teraz wiem dokładnie co oznaczają te wszystkie ptaszki i co mam robić :)