[Poradnik] Jak skompilować kod? |
Autor |
Wiadomość |
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 08-03-2012, 23:34 [Poradnik] Jak skompilować kod?
|
|
|
Bez zbędnych wstępów:
1. Pobieramy i instalujemy Microsoft Visual C++ 6 (linka nie podaję, jest na torrentach).
2. Pobieramy i instalujemy DirectX 8 SDK (Link).
3. Pobieramy lekko zmodyfikowane 2 pliki z kodem (Link).
4. Otwieramy projekt.
5. Wchodzimy w Project -> Settings.
6. W zakładce Link zmieniamy zmieniamy umiejscowienie bibliotek DirectX tam gdzie je zainstalowaliśmy.
7. Wchodzimy w Tools -> Options.
8. W zakładce Directories dopisujemy folder, w którym są include oraz library DX SDK które zainstalowaliśmy i przerzucamy je na samą górę (tak, aby najpierw sprawdzało te foldery).
9. Kompilujemy.
10. Odpalamy przez debuggera(Ctrl+F5).
11. Cieszymy się własnoręcznie skompilowanym Colobotem
Mam nadzieję, że pomogłem wielu osobom, które miały problem z kompilacją, a także że ten poradnik jest wystarczająco czytelny i zrozumiały.
Jeśli macie jakieś dalsze problemy z kompilacją, bądź pytania piszcie w temacie, postaram się pomóc. |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
Ostatnio zmieniony przez Programerus 09-03-2012, 20:08, w całości zmieniany 1 raz |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 09-03-2012, 19:29
|
|
|
Poradnik dobry. Jednak, chłopcy, postąpiłem wg niego i wyszło mi coś takiego:
Kod: | --------------------Configuration: projet1 - Win32 Release--------------------
Compiling resources...
Compiling...
auto.cpp
autobase.cpp
autoconvert.cpp
autoderrick.cpp
autodestroyer.cpp
autoegg.cpp
autoenergy.cpp
autofactory.cpp
autoflag.cpp
autohuston.cpp
autoinfo.cpp
autojostle.cpp
autokid.cpp
autolabo.cpp
automush.cpp
autonest.cpp
autonuclear.cpp
autopara.cpp
autoportico.cpp
autoradar.cpp
autorepair.cpp
autoresearch.cpp
autoroot.cpp
autosafe.cpp
autostation.cpp
autotower.cpp
blitz.cpp
brain.cpp
button.cpp
camera.cpp
cbottoken.cpp
check.cpp
cloud.cpp
cmdtoken.cpp
color.cpp
compass.cpp
control.cpp
d3dapp.cpp
C:\Program Files\Microsoft DirectX 8.1 SDK\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d3dengine.cpp
d3denum.cpp
d3dframe.cpp
d3dmath.cpp
d3dtextr.cpp
d3dutil.cpp
displayinfo.cpp
displaytext.cpp
edit.cpp
editvalue.cpp
event.cpp
gauge.cpp
group.cpp
image.cpp
iman.cpp
interface.cpp
joystick.cpp
key.cpp
label.cpp
light.cpp
list.cpp
maindialog.cpp
mainmap.cpp
mainmovie.cpp
D:\Z Robota\HardWork\mainmap.cpp(201) : warning C4700: local variable 'pw' used without having been initialized
mainshort.cpp
map.cpp
math3d.cpp
metafile.cpp
misc.cpp
model.cpp
modfile.cpp
motion.cpp
motionant.cpp
motionbee.cpp
motionhuman.cpp
motionmother.cpp
motionspider.cpp
motiontoto.cpp
motionvehicle.cpp
motionworm.cpp
object.cpp
particule.cpp
physics.cpp
planet.cpp
profile.cpp
pyro.cpp
restext.cpp
robotmain.cpp
script.cpp
scroll.cpp
D:\Z Robota\HardWork\script.cpp(1500) : warning C4700: local variable 'iAngle' used without having been initialized
shortcut.cpp
slider.cpp
sound.cpp
studio.cpp
target.cpp
task.cpp
taskadvance.cpp
taskbuild.cpp
taskfire.cpp
taskfireant.cpp
taskflag.cpp
taskgoto.cpp
taskgungoal.cpp
taskinfo.cpp
taskmanager.cpp
taskmanip.cpp
taskpen.cpp
taskrecover.cpp
taskreset.cpp
tasksearch.cpp
taskshield.cpp
taskspiderexplo.cpp
tasktake.cpp
taskterraform.cpp
taskturn.cpp
taskwait.cpp
terrain.cpp
text.cpp
water.cpp
window.cpp
Linking...
LINK : fatal error LNK1181: cannot open input file "C:\Program.obj"
Error executing link.exe.
projet1.exe - 1 error(s), 2 warning(s) |
O co chodzi z plikiem "Program.obj"? I czy te dwa ostrzeżenia to normalne? |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 09-03-2012, 20:07
|
|
|
Te dwa ostrzeżenia są normalne, co do tego drugiego masz chyba coś źle ustawione, bo nie powinno wyszukiwać takiego pliku jak program.obj |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 10-03-2012, 13:30
|
|
|
Udało mi się. Zamiast tak:
WielkiBrat napisał/a: | 5. Wchodzimy w Project -> Settings.
6. W zakładce Link zmieniamy zmieniamy umiejscowienie bibliotek DirectX tam gdzie je zainstalowaliśmy. |
Po prostu umieściłem wszystkie te pliki do standardowego katalogu, który był już zdefiniowany w projekcie: "c:\dx7sdk\lib".
Tylko te pliki są potrzebne:
Kod: | d3dx.lib
ddraw.lib
dinput.lib
dsound.lib
dxguid.lib |
Ciekawe, co by było, gdyby skompilować z nowszą wersją Microsoft DirectX SDK, np. 9.0c. Może wydajność by skoczyła? Wiem co mówię. Mam stare maszyny i kilka gier z tamtych lat. Niektóre posiadają lepszą grafikę i efekty niż CoLoBoT i działają nawet płynniej, niż CoLoBoT z pełnymi detalami w rozdzielczości choćby 800x600 z wieloma obiektami na mapie.
Kod: | --------------------Configuration: projet1 - Win32 Release--------------------
Compiling resources...
Compiling...
auto.cpp
autobase.cpp
autoconvert.cpp
autoderrick.cpp
autodestroyer.cpp
autoegg.cpp
autoenergy.cpp
autofactory.cpp
autoflag.cpp
autohuston.cpp
autoinfo.cpp
autojostle.cpp
autokid.cpp
autolabo.cpp
automush.cpp
autonest.cpp
autonuclear.cpp
autopara.cpp
autoportico.cpp
autoradar.cpp
autorepair.cpp
autoresearch.cpp
autoroot.cpp
autosafe.cpp
autostation.cpp
autotower.cpp
blitz.cpp
brain.cpp
button.cpp
camera.cpp
cbottoken.cpp
check.cpp
cloud.cpp
cmdtoken.cpp
color.cpp
compass.cpp
control.cpp
d3dapp.cpp
C:\Program Files\Microsoft DirectX 8.1 SDK\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d3dengine.cpp
d3denum.cpp
d3dframe.cpp
d3dmath.cpp
d3dtextr.cpp
d3dutil.cpp
displayinfo.cpp
displaytext.cpp
edit.cpp
editvalue.cpp
event.cpp
gauge.cpp
group.cpp
image.cpp
iman.cpp
interface.cpp
joystick.cpp
key.cpp
label.cpp
light.cpp
list.cpp
maindialog.cpp
mainmap.cpp
mainmovie.cpp
D:\Z Robota\HardWork\mainmap.cpp(201) : warning C4700: local variable 'pw' used without having been initialized
mainshort.cpp
map.cpp
math3d.cpp
metafile.cpp
misc.cpp
model.cpp
modfile.cpp
motion.cpp
motionant.cpp
motionbee.cpp
motionhuman.cpp
motionmother.cpp
motionspider.cpp
motiontoto.cpp
motionvehicle.cpp
motionworm.cpp
object.cpp
particule.cpp
physics.cpp
planet.cpp
profile.cpp
pyro.cpp
restext.cpp
robotmain.cpp
script.cpp
scroll.cpp
D:\Z Robota\HardWork\script.cpp(1500) : warning C4700: local variable 'iAngle' used without having been initialized
shortcut.cpp
slider.cpp
sound.cpp
studio.cpp
target.cpp
task.cpp
taskadvance.cpp
taskbuild.cpp
taskfire.cpp
taskfireant.cpp
taskflag.cpp
taskgoto.cpp
taskgungoal.cpp
taskinfo.cpp
taskmanager.cpp
taskmanip.cpp
taskpen.cpp
taskrecover.cpp
taskreset.cpp
tasksearch.cpp
taskshield.cpp
taskspiderexplo.cpp
tasktake.cpp
taskterraform.cpp
taskturn.cpp
taskwait.cpp
terrain.cpp
text.cpp
water.cpp
window.cpp
Linking...
projet1.exe - 0 error(s), 2 warning(s) |
|
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
cyklopek11
Dołączył: 01 Kwi 2008 Posty: 25
|
Wysłany: 13-03-2012, 17:48
|
|
|
Witam wszystkich. Kompiluje kod wg wskazówek, odpalam ctrl + F5 i wyskakuje mi abym włożył płytę??? W kodzie źródłowym nic na razie nie grzebałem ? Jak to uruchomić? |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 13-03-2012, 17:54
|
|
|
cyklopek11 napisał/a: | Witam wszystkich. Kompiluje kod wg wskazówek, odpalam ctrl + F5 i wyskakuje mi abym włożył płytę??? W kodzie źródłowym nic na razie nie grzebałem ? Jak to uruchomić? |
Jest to standardowe ustawienie w pliku "language.h". Da się skompilować CoLoBoT'a do wersji niewymagającej instalacji/płyty instalacyjnej. BTW: Musimy popracować nad dokumentacją tych ustawień z tego pliku. Jest masa kombinacji związanych ze wszystkimi CeeBot'ami i CoLoBoT'ami.
[ Dodano: 13-03-2012, 17:58 ]
Już mam:
W pliku "language.h" jest linia:
Trzeba zamienić jej wartość z FALSE na TRUE i powinno startować. |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
cyklopek11
Dołączył: 01 Kwi 2008 Posty: 25
|
Wysłany: 13-03-2012, 19:05
|
|
|
Niestety nie działa! Skompilowane w trybie DEMO powoduje powstanie okienka i pożera 50% mocy procesora i tak już wisi. Czy komuś udało się w ogóle uruchomić to po kompilacji ??? |
|
|
|
|
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 13-03-2012, 19:15
|
|
|
Tak, bezproblemowo. Nie modyfikowałem niczego w language.h |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
|
|
|
|
cyklopek11
Dołączył: 01 Kwi 2008 Posty: 25
|
Wysłany: 13-03-2012, 19:20
|
|
|
Ja też nie i wyskakuje mi włóż płytę |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 13-03-2012, 19:30
|
|
|
Programerus napisał/a: | Tak, bezproblemowo. Nie modyfikowałem niczego w language.h |
Bo masz widocznie zainstalowanego CoLoBoT'a i masz stosowną wartość w rejestrze. Ja zawsze korzystam z mojej wersji portable'owej i nie mam oficjalnie zainstalowanego w systemie. Dlatego pewnie mnie też wyskakiwał ten sam błąd, co cyklopkowi. |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
musznik
Wiek: 32 Dołączył: 15 Mar 2011 Posty: 4 Skąd: nieJestemBotem
|
Wysłany: 13-03-2012, 22:20
|
|
|
Co do problemu z włożeniem płyty to w pliku d3dapp.cpp w funkcji Error CD3DApplication::RegQuery() jako pierwszą linijka kodu, dodać - return ERR_OK;
dodam że bezproblemowo skompilowałem kod pod Visual Studio 2010, a błąd którym sypało na lewo i prawo wyeliminowałem dopisując gdzieś "#define POINTER_64" - w którym pliku, nie pamiętam, ale w logach będzie wiadomo
ps. po kompilacji grafa się krzaczy, i nic nie widać - pracuje nad tym |
|
|
|
|
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 13-03-2012, 22:27
|
|
|
Musznik, jak Ci się grafa krzaczy to zmień w ustawieniach grafiki urządzenie. |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 13-03-2012, 22:35
|
|
|
musznik napisał/a: | ps. po kompilacji grafa się krzaczy, i nic nie widać - pracuje nad tym |
Może chodzi o nieprawidłowe pliki colobot#.dat? Umieść gotową binarkę do katalogu ze swoim oryginalnym CoLoBoT'em albo zbuduj przy pomocy skryptów BAT aMakeList*.bat właściwe pliki colobot#.dat. Skrypty te są w źródle, w katalogach kolejno textures dla colobot1.dat, objects dla colobot2.dat i sound dla colobot3.dat. |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
cyklopek11
Dołączył: 01 Kwi 2008 Posty: 25
|
Wysłany: 13-03-2012, 23:52
|
|
|
Jak masz problemy z grafą to może to być wina colobot1.dat. Weź ostateczną polską wersję z katalogu polish/polish4.zip . Problem powinien zniknąć.
[ Dodano: 14-03-2012, 12:26 ]
Myślę, że dobrze byłoby aby każdy z nas zabrał się za jeden plik źródłowy (.cpp)
- przetłumaczył oryginalne komentarze wraz ze zrozumieniem
- "wgryzł" się w kod, dopisał własne komentarze, spisał i opisał (tak jak zrozumiał z kodu) zmienne i funkcje z danej klasy. Taki Help. Wiem, że teraz każdy rzucił się od razu na wszystkie pliki źródłowe (ja też), chce wcielać w życie elementy których mu zabrakło w oryginalnym colobocie. |
|
|
|
|
JockX
Gość
|
Wysłany: 14-03-2012, 22:00 Dodatkowe instrukcje?
|
|
|
Mam 3 pytana. Po pierwsze, jak postępować aby skompilować program na współczesnych kompilatorach? Instrukcja z pierwszego postu zgadza się dla Visual Studio 6, ale jak zrobić to na Visual C++ 2010 Expres lub Code::Blocks? Ten pierwszy marudzi, że nie może otworzyć pliku projektu (Project upgrade failed.), a ten drugi przy buildowaniu sypie błędami:
Kod: | E:\inne\DXSDK\include\d3dtypes.h|1096|error: redefinition of 'D3DVT_FORCE_DWORD'|
E:\inne\DXSDK\include\d3dtypes.h|1095|error: 'D3DVT_FORCE_DWORD' previously defined here|
E:\Downloads\ceebot\Robot\projet1\D3DApp.h|23|error: use of enum 'D3DMouse' without previous declaration| | ...oraz ponad 20 innych, podobnych.
Drugie pytanie: Po skompilowaniu w VS6 gra uruchamia się. Po wyedytowaniu w language.h:
Kod: | #define _FRENCH FALSE
#define _ENGLISH TRUE | nawet po angielsku, jednak pliki z pomocami, mission obcjectives itp. są nadal po francusku. Co i gdzie powinienem podmienić? Widzę w paczce także polskie wersje, ale nie bardzo orientuję się, co gdzie powinno wylądować.
No i ostatnie pytanie: Jakie kroki należy wykonać, aby przygotować katalog z którego można przeprowadzić zwykłą instalację? To co jest w katalogu projet1/install uruchamia się, ale nie może skopiować żadnego pliku, więc wyrzuca podczas działania 500 błędów i kończy się , z kolei próba uruchomienia projet.exe poza VS6 kończy się wyświetleniem komunikatu o konieczności instalacji aplikacji. |
|
|
|
|
|