Skocz do zawartości
rezo_

Visual Studio 2008 + Qt + Uruchomienie Na Innym Kompie

Rekomendowane odpowiedzi

Witam, napisałem program w C++ rysujacy szczescian i czworoscian z kilkoma dodatkowymi funkcjami (ale to nieistotne) i opakowalem to w GUI za pomoca biblioteki QT. Pisalem i kompilowalem w Visual Studio 2008, na Windows Vista.

 

Wszystko extra, ale problem pojawia sie gdy probuje odpalic program nie na moim systemie. U kumpli nie dziala, obok Visty mam postawiony Win XP i faktycznie nie chce sie odpalic, wyrzuca blad o blednej konfiguracji pliku i informacje ze problem moze rozwiazac ponowna instalacja-czyli na pewno chodzi o jakies brakujace dll'e. Program Dependency Walker informuje mnie ze brakuje bibliotek: QTCORE.dll, QTGUID4.dll, msvcr90d.dll, msvcp90d.dll. Wrzucilem je do folderu z plilkiem wykonywalnym lecz nadal sie nie odpala, tym razem Dependency Walker mowi ze brakuje DWMAPI.dll, w XP nie mialem w ogole tego dll'a, mialem go za to w Vist'cie, jednak doczytalem na necie ze jest do plik przeznaczony jedynie dla systemu Vista i nie powinien on sie znajdowac w XP, zreszta program nie dziala nawet po wrzuceniu tego pliku do folderu z programem, doczytalem takze ze to jakis bug spowodowany przez instalacje IE 7.0.

Czy ktos spotkal sie z wyzej wymienionym problemem? Jak odpalic moj program na innym kompie, zaczyna mi brakowac cierpliwosci...

 

Pozdrawiam

Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ustaw w properties dllki "copy local" na true. Jezeli to nie pomoze to dodatkowo ustaw jeszcze "specyfic version" na true.

A gdzie dokladnie sa te opcje ? Bo nie moge wypatrzec.

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

na pewno chodzi o jakies brakujace dll'e. Program Dependency Walker informuje mnie ze brakuje bibliotek: QTCORE.dll, QTGUID4.dll, msvcr90d.dll, msvcp90d.dll.

 

...

 

A gdzie dokladnie sa te opcje ? Bo nie moge wypatrzec.

 

Pozdrawiam

Klikasz na dllke (masz je w solution explorer w references) i potem przy zaznaczonej dllce (np. qtcore.dll) klikasz na properties view i tam wybierasz copy local na true i specyfic version na true.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po kiego ładujesz obsługe Aero do programu?

SGJ poswiec kilka sekund na wygoglowanie problemu DWMAPI.dll aby w przyszlosci nie zadawac glupich pytan, zadnego Aero nie pakowalem. Zreszta wystarczylo dokladnie przeczytac pierwszy post w ktorym napisalem ze jest to bug (spowodowany instalacja na xp IE 7.0)

 

Klikasz na dllke (masz je w solution explorer w references) i potem przy zaznaczonej dllce (np. qtcore.dll) klikasz na properties view i tam wybierasz copy local na true i specyfic version na true.

Dołączona grafika

 

Nie mam ?? Ja tych bibliotek sam do projektu nie dodawalem, napisalem kod w QT, skompilowalem qmake'iem i on utworzyl mi projekt VC++ z uzupelnionymi sciezkami do odpowiednich bibliotek we wlasciwosciach projektu. Tak jak widzisz dll'i w solution explorer bezposrednio nie mam.

 

Pozdrawiam

Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaden problem dwmapi i ie7 nie istnieje....

 

Ale jak się próbuje uruchomic na innym systemie program skompilowany w debug zamiast release to nic dziwnego ze nie działa...

Istnieje, doczytaj: http://forums.msdn.microsoft.com/en-US/vcl...b-9dc378d87e5a/

http://forums.msdn.microsoft.com/en-US/clr...5-e098a4e40229/

i wiele innych watków.

 

BTW Druga uwaga byla trafna. Po skompilowaniu w Release i wrzuceniu do folderu z plikiem wykonywalnym kilku bibliotek program ruszyl na xp. Jednak jesli odinstaluje msvc++ 2008 redistributable package to znowu wywala sie na DWMAPI.dll, a nie chce aby kazda osoba ktorej wysle program musiala doinstalowywac jakies rzeczy o ktorych nie powinna wiedzec, trzeba to jakos zintegrowac.

 

EDIT

 

Zrobilem paczke instalacyjna do ktorej oprocz pliku wykonywalnego i dwoch bibliotek QT dodalem Merge Module : Microsoft.vc90.crt i teraz po instalacji wszystko smiga zarowno na innym systemie xp jak i vista.

Jednakze skoro robie juz paczke to czemu nie dodac zamiast tego modulu calego msvc++ 2008 redistributable? Tak tez zrobilem, i tu pojawia sie problem. Pod koniec instalacji mojego programu uruchamia sie instalator msvc++ 2008 redistributable, jednakze wywala blad gdyz instalator msvc++ 2008 redistributable wykrywa iz w tle dziala juz jakis inny instalator ( wlasnie ten z ktorego msvc++ 2008 redistributable zostal uruchomiony) i protestuje, wobec czego cala instalacja przepada. Jak to pogodzic?

Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po kiego ładujesz obsługe Aero do programu?

to się dziwnym trafem samo często ładuje poprzez inne biblioteki. Nawet jeśli nie jest używane

 

Jednak jesli odinstaluje msvc++ 2008 redistributable package to znowu wywala sie na DWMAPI.dll, a nie chce aby kazda osoba ktorej wysle program musiala doinstalowywac jakies rzeczy o ktorych nie powinna wiedzec, trzeba to jakos zintegrowac.

 

EDIT

 

Zrobilem paczke instalacyjna do ktorej oprocz pliku wykonywalnego i dwoch bibliotek QT dodalem Merge Module : Microsoft.vc90.crt i teraz po instalacji wszystko smiga zarowno na innym systemie xp jak i vista.

msvc++ redisty zazwyczaj są dystrybuowane w patchach i servicepackach chyba, więc tak czy siak kiedyś user będzie je miał.

 

z tym merdżem to troche do pupy, bo powinno się unikać dystrybuowania oddzielnych dllek skoro są to dllki systemowe (powielanie binariów)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to się dziwnym trafem samo często ładuje poprzez inne biblioteki. Nawet jeśli nie jest używane

 

 

msvc++ redisty zazwyczaj są dystrybuowane w patchach i servicepackach chyba, więc tak czy siak kiedyś user będzie je miał.

 

z tym merdżem to troche do pupy, bo powinno się unikać dystrybuowania oddzielnych dllek skoro są to dllki systemowe (powielanie binariów)

Mam na XP wgrane SP3 i wszystkie aktualizacje i nie mam MSVC++ Redistributable 2008(vc90), jest tylko wersja (vc80). Wiec albo musze dodac merdża, albo dodac calego redistributable do pakietu jednak wtedy wywala sie przez wyzej opisany blad.

 

Jak juz napisalem to się samo nie laduje do prawidłowo skompilowanego programu.

Kompilowanie programu nie ma tu nic do rzeczy, DWMAPI.dll nie jest w ogole zaladowany do programu. Niepoprawne referencje do DWMAPI.dll sa juz w plikach systemowych XP co powoduje instalacja IE 7.0 na tym systemie, wiecej info na google i np w linkach ktore dalem wyzej. Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ma do rzeczy i to duzo.

 

Po pierwsze.

Próbujesz uruchamiac na innych komputerach wersję debug, a ta wersja nie jest do tego przeznaczona.

 

Po drugie.

W wersji debug mogli sobie zlinkowac co chcieli. Ta wersja ma działac tylko pod VS na systemie w którym kompilowany jest program.

 

Po trzecie

To nie jest problem IE7 tylko tego ze kompilujesz pod Vistą, a tym samym tylko na tym systemie powinna byc uruchamiana wersja debug.

 

Po czwarte

Kompilacja pod XP/2003 nie powoduje tego problemu a tym samym potwierdza ze to nie wina IE.

 

Po piąte.

Program który ma byc udostepniany innym i uruchamiany na innym komputerze zawsze powinien byc skompilowany w release.

 

 

Po szesnaste.

Do instalacji uzyj czegos co nie uzywa instalatora windows to nie będzie problemu z uruchomieniem redist, a i szybciej się wszystko zainstaluje.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

SGJ, na poczatku przez przeoczenie program byl skompilowany w Debug wiec moze nie zauwazyles ale aktualnie mowa jest o programie skompilowanym w wersji Release(traktuje o tym post #10 w tym temacie) wiec te Twoje "porady" mozna wyrzucic do kosza, przeczytaj watek zanim zdecydujesz sie odpowiedziec B-)

Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

I jaki masz problem z release?

Release działa prawidłowo i nie ma zadnego błedu Ie ani nic takiego, tylko wina nieudolnego "programisty" który nie opanowal podstaw dzialania IDE i kompilatora z którego korzysta.

 

The Microsoft Visual C++ 2008 Redistributable Package (x86) installs runtime components of Visual C++ Libraries required to run applications developed with Visual C++ on a computer that does not have Visual C++ 2008 installed.

 

 

Więc zyczę powodzenia w uruchamianiu programów bez odpowiednich bibliotek...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

I jaki masz problem z release?

Release działa prawidłowo i nie ma zadnego błedu Ie ani nic takiego, tylko wina nieudolnego "programisty" który nie opanowal podstaw dzialania IDE i kompilatora z którego korzysta.

 

The Microsoft Visual C++ 2008 Redistributable Package (x86) installs runtime components of Visual C++ Libraries required to run applications developed with Visual C++ on a computer that does not have Visual C++ 2008 installed.

 

 

Więc zyczę powodzenia w uruchamianiu programów bez odpowiednich bibliotek...

Bledy sa nieodlaczna czescia tej profesji i kwestia tylko jak szybko zdolasz je wylapac i poprawic, a poczatkowe przeoczenie kompilacji w trybie release nie wynika z tego że jestem nieudolnym programistą ktory nie opanowal podstaw dzialania IDE i kompilotra z ktorego korzysta jak starasz sie mi ublizyc, lecz ze zwyklego pospiechu i niedopatrzenia.

Ale jestem pełen uznania dla Twego geniuszu skoro nie zdarza Ci sie nigdy czegos przeoczyc a kazdy kod ktory napiszesz kompiluje sie bez zadnej poprawki za pierwszym razem :lol2:

I dlaczego uparcie nie przeczytasz watku w ktorym zabierasz glos? Kto mowi o uruchamieniu programu bez msvc redist(oprocz Ciebie)? W poscie #10 jest jasno napisane ze chce zintegrowac instalacje MSVC 2008 Redist z programem i jest tam tez opisane jaki napotykam problem. Wiec jezeli chcesz cos wniesc do tematu to racz podac jakis konkret odnosnie "Po szesnaste" z Twojego wczesniejszego postu, bo cos tam o tym napomknales :wink:

 

Pozdrawiam

Edytowane przez moreno

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam na XP wgrane SP3 i wszystkie aktualizacje i nie mam MSVC++ Redistributable 2008(vc90), jest tylko wersja (vc80). Wiec albo musze dodac merdża, albo dodac calego redistributable do pakietu jednak wtedy wywala sie przez wyzej opisany blad.

no ale zważ, że dopiero była premiera visual studio 2008, do 2005 vc80 chyba było w poprawkach dostępnych przez windows updejt? Czy nie? Tak samo będzie podejrzewam z vc90 ino za jakiś czas :)

 

Podstawowe operacje jakie wykonuję przez wypuszczeniem programu w świat, to kompilacja do releasa (najlepiej ustawiając wszlekie propertiesy projektu od razu robić to samo dla releasa), i daję program kilku zaufanym osobom na sprawdzenie (takim które nie mają visuala :) ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...