Autor Wątek: Konfiguracja VS Express 2005 do pracy z WinAPI  (Przeczytany 5923 razy)

Offline zarius

  • Użytkownik

# Luty 11, 2006, 15:28:07
Nie wiem czy tylko ja jestem taki uposledzony czy co jest grane.

Zainstalowalem PSDK, probilem sciezki, wyedytowalem pliki i niby mam wszystko OK. Daje najprostszy program jaki mozna zrobic pod Windows (puste okno) kompiluje i dziwne erroy. Domyslilem sie ze chodzi o w_char wiec znalazlem w opcjach i wylaczylem UNICODE, no i bajer zostla jeden error, nie wiem czemu VC2005 wymaga tego ale dalem to dziwne __stdcall przed WinMain (nigdy tego nie robilem)

Program sie skompilowal, zaczyna sie uruchamiac i mam error ze brakuej DLL msvcr80d.dll. Mysle WTF nigdy jak pisalem w VC2003 nie prosil mnie o takie dll no ale dobra dalem w windows search znalazlem to dll i skopiowalem do katalogu tam gdzie mam program.

Odpalam go i kolejny message box z errorem tym razem dluzszym no i cos tam pisze, need to modify your application to bulid in with manifest.

Ok zagladam znow w opcje i widze sekcje zwiazana z MANIFEST'em (cokolwiek to jest). Nie wiem za cholere co tam ustawic i dziwie sie czemu ten exe w debug ma tylko 40kb (normalnie jak pisalem to mialo to przewanie z 80 a to wyglada bardziej na jakis CLR program :P)

Moje pytanie jest nastepujace: jak poprawnie ustawic zebym mogl w koncu pracowac w tym VC2005 Express (chyba z niego zrezygnuje bo ma jeszcze gorszy IntelliSense niz ten z 2003, wpisuje sobie WNDCLASSEX wcex; wcex. <- i nic, daje jeszcze raz . i nic, za trzecim razem kasuje ja i daje kropke i dopiero lista sie wyswietlila, tak jest caly czas !, ponadto wpisuje CreateWindow( <- i nie ma listy parametrow, albo ZeroMemory( <- problem ten sam, jest to bardzo uciazliwe. Da sie to jakos poprawic ?) i czy da rade w jakis sposob pisac programy ktore nie beda musialy posiadac tego dll'a bo to wkoncu 1.1 MB !

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

nadult

  • Gość
# Luty 11, 2006, 15:58:46
linker->Manifest file->Generate manifest ustawic na "True"

Przelaczyc na Release, bedzie zlinkowany do msvcr80.dll (jesli chcesz mniejsza) albo nie uzywac Multithread DLL
« Ostatnia zmiana: Luty 11, 2006, 17:10:20 wysłana przez st3tc »

Offline zarius

  • Użytkownik

# Luty 11, 2006, 18:11:09
linker->Manifest file->Generate manifest ustawic na "True"

Przelaczyc na Release, bedzie zlinkowany do msvcr80.dll (jesli chcesz mniejsza) albo nie uzywac Multithread DLL

Ok, z manifestem to bylo ustawione na true a i tak nie dzialalo, dziwne to, ale dalem jescze raz nowy projekt skopiowalem kod i poszlo bez zastrzezen, nawet juz nie potrzebowalem kopiowac tej DLL'ki.

Wszystko stalo sie jasne :P Gdyby jeszcze ten intelli sense dzialal lepiej, da sie go jakos podkrecic :P ?

nadult

  • Gość
# Luty 11, 2006, 18:36:19
Ono dziala bardzo dobrze - lepiej niz 2002/2003. Potrzebuje troche czasu na rebuildniecie bazki i tyle (co swoja droga wkurza strasznie - jak po zmianie pierdoly w jakims *.h VC++ twierdzi, ze updatuje IntelliSense z ponad 1000-ca plikow ... (co trwa :/))

Offline zarius

  • Użytkownik

# Luty 11, 2006, 20:37:15
Ono dziala bardzo dobrze - lepiej niz 2002/2003. Potrzebuje troche czasu na rebuildniecie bazki i tyle (co swoja droga wkurza strasznie - jak po zmianie pierdoly w jakims *.h VC++ twierdzi, ze updatuje IntelliSense z ponad 1000-ca plikow ... (co trwa :/))

No to dziwne bo jak dla mnie to nie o to chodzi ze IntelliSense nic nie pokazuje (co sie zdaza rowniez) ale np daje :: i chce odnalezc np typ IDirect3DDevice9 a nie znalazlem nic zwiazanego z DX'em (mimo ze progrma sie kompilowal bez bledow, czyli dobrze wszystko ustawilem)

Narazie dalej bawie sie w VC 2003 bo to mi bardoz nie odpowiada :/

Offline r3v3x

  • Użytkownik

# Luty 15, 2006, 22:02:14
Witam. To mój pierwszy post na tym forum :D Ale do rzeczy....

Pisze w tym temacie bo wydaje mi się pokrewny do mojego problemu  :-\
Otóż nie wiem dlaczego nie moge uruchomić żadnego mojego programu na komputerze innym niż mój  :'(
Pisze w VC++ 2k5 EE, wgrałem Platform SDK, usunołem ten problem ze znakami unicode (dzięki temu tematowi :D), pisze w "czystym" winapi i c++ jednak mój kolega nie może uruchomić mojego programiku - wyświetla mu że nie ma jakiegoś pliku dll - chyba msvcr80.dll :/
A i aby nie było - kompiluje jako relase i jestem nieco zielony jeśli chodzi o visuale  :-[. Już sam nie wiem co robić  :'(

Z góry dzięki za pomoc. 



« Ostatnia zmiana: Luty 17, 2006, 14:00:30 wysłana przez r3v3x »

Offline SauRooN

  • Użytkownik

# Luty 18, 2006, 02:02:23
Ja właściwie chciałem o to samo zapytać. W Visualu 7.1 było tak, że jak się korzystało z /MD, to program korzystał z msvcr71.dll itd. i wystarczyło je dołączyć do exe'ca. Natomiast w visualu 8.0 jak używam /MD, to na większości kompów nie odpala się ten exe'c (mi akurat nie wywala komunikatu o braku dll'ki, tylko taki błąd, jakby exe'c był uszkodzony). Przeleciałem disasmem i wygląda to tak, jakby był jakiś rąbnięty entry point. No ale nieważne. Początkowo myślałem, że chodzi tylko o NET Framework 2.0, ale po instalnięciu go było to samo. Dołączenie do exe'ca dll'ek msvcr80.dll itd. nic nie daje. W czym jest problem i jak go rozwiązać?

nadult

  • Gość
# Luty 18, 2006, 02:15:11
Cytuj
Początkowo myślałem, że chodzi tylko o NET Framework 2.0, ale po instalnięciu go było to samo
Dziwne u mnie to zawsze rozwiązywało takie problemy. Może po instalacji zapomniałeś zresetować kompa ?  ;D

Offline SauRooN

  • Użytkownik

# Luty 18, 2006, 03:42:50
nadult: jeszcze raz to sprawdzę dla pewności, może rzeczywiście zapomniałem o restarcie (ale wątpię). W każdym razie to nie jest rozwiązanie, czasem wysyłam kod do kogoś, kto niekoniecznie ma NET Frameworka 2.0 i chciałbym, żeby niezależnie od tego się odpaliło. Może ktoś wie co by trzeba zrobić (np. które dll'ki dodać), żeby działało?

Offline mINA87

  • Użytkownik

# Luty 18, 2006, 12:02:21
no niestety nie jest to takie łatwe teraz :] mówiłem Ci kiedyś o tym SauR :D Teraz te runtime'y to nei dll'ki tylko : "Shared Side-by-Side Assemblies", które musza zarówno wsytępować w systemie (i tutaj pierwsza niespodzianka bo np. w : E:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd) a poza tym muszą być zarejestrowane w systemie... Jak zywkle kolejny pomysł na utrudnienie życia użyszkodnikom... Są chyba redistributable pakiety do tego albo... dotShit 2.. Jeśli nie sa zarejestrowane dll'ki to wyskakuje radosny komunikat: "Aplikacja nie zainicjiowana, jej ponowne zainstalwoanei powinno rozwiązać problem" or sth like this :]

Offline SauRooN

  • Użytkownik

# Luty 18, 2006, 12:09:40
:/ To bardzo duży minus tego visuala :/

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Luty 18, 2006, 12:52:59
Zawsze można spróbować użyć runtime'u z wcześniejszej wersji. ;) VX-POST robiłem na visualu 7.1 używając runtime z VC 6 (msvcrt.dll jest domyślnie zainstalowany, a msvcr71.dll nie zawsze) i chodziło bez problemu (no, może musiałem parę rzeczy dla kompatybilności napisać). :) O ile dobrze pamiętam, command-line'owa wersja VC 7.1 była dostępna do sciągnięcia z Microsoftu, więc można spróbować użyć runtime'u rozprowadzanego razem z nią. :)
« Ostatnia zmiana: Luty 18, 2006, 12:56:02 wysłana przez Krzysiek K. »

nadult

  • Gość
# Luty 18, 2006, 12:58:41
:/ To bardzo duży minus tego visuala :/
Dlatego przydaje się mieć dodatkowo jakąś starszą wersję visuala (w gruncie rzeczy to tylko vs2003 się nadaje :)). Ja wszystko robię w VS2005, a jeśli coś ma działać na innych kompach to kompiluję za pomocą Vs2003.

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Luty 18, 2006, 13:12:02
Ale czy przypadkiem nie jest to cecha tylko Expressa? Btw. o ile dobrze pamiętam to gdzieś na stronkach MS'a było how-to jak przygotować w nim aplikacje w sposób umożliwiający uruchomienie na innych kompach, na których nie ma zainstalowanego VC2k5, poszukam

edit:
proszę bardzo: http://blogs.msdn.com/nikolad/archive/2005/09/02/460368.aspx

edit2:
jakby ktoś chciał to podaję 'moje' google-query :] http://www.google.pl/search?hl=pl&q=vs2005+express+running+applications+another+computer&lr=
« Ostatnia zmiana: Luty 18, 2006, 13:16:24 wysłana przez shyha »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Luty 18, 2006, 14:04:16
Cytuj
Ja wszystko robię w VS2005, a jeśli coś ma działać na innych kompach to kompiluję za pomocą Vs2003.
W takim razie poniższy link może być przydatny. :)
http://msdn.microsoft.com/visualc/vctoolkit2003/