Mökiltä palatessani ajattelin "Tänään perehdyn peliohjelmoinnin maailmaan" ja useampien erilaisten ohjelmistoyhdistelmien jälkeen päädyin Borland C++ Builderiin ja Allegro grafiikka-mikäliehen.
Koska systeemi oli tarkoitus saada toimimaan, kopioin erään yksinkertaisen Allegron tutorial-pätkän, joka menee seuraavasti:
#include <allegro.h> int main(int argc, char *argv[]) { allegro_init(); set_gfx_mode(GFX_AUTODETECT, 640,480,0,0); readkey(); return(0);// Exit with no errors } END_OF_MAIN();
Käyttis on Windows 98 ja olen Borlandilla yrittänyt kääntää ko. ohjelmaa MS-DOS-tilassa operoiden.
Ylempänä olevaa ohjelmaa kääntäessäni Borland kuitenkin ilmoittaa:
E:\Borland\BCC55\Bin>bcc32 Noname1.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Noname1.cpp:
Error E2132 e:\Borland\Bcc55\include\stdlib.h 434: Templates and overloaded oper
ators cannot have C linkage
Error E2040 e:\Borland\Bcc55\include\stdlib.h 434: Declaration terminated incorr
ectly
Error E2316 e:\Borland\Bcc55\include\stdlib.h 507: '_argc' is not a member of 's
td'
Error E2272 e:\Borland\Bcc55\include\stdlib.h 507: Identifier expected
Error E2316 e:\Borland\Bcc55\include\stdlib.h 508: '_argv' is not a member of 's
td'
Error E2272 e:\Borland\Bcc55\include\stdlib.h 508: Identifier expected
Error E2316 e:\Borland\Bcc55\include\stdlib.h 605: 'min' is not a member of 'std
'
Error E2272 e:\Borland\Bcc55\include\stdlib.h 605: Identifier expected
Error E2316 e:\Borland\Bcc55\include\stdlib.h 606: 'max' is not a member of 'std
'
Error E2272 e:\Borland\Bcc55\include\stdlib.h 606: Identifier expected
*** 10 errors in Compile ***
Ongelman aiheuttajasta minulla ei ole hajuakaan. Olen mm. ladannut ja asentanut Allegron useampaan kertaan, eli siirron aikana tapahtuneesta virheestä tuskin on kyse.
Kuten jo sanoin, olen toistaiseksi totaalinen viherpeukalo C++:n kanssa, eli jos kysymys oli jostain todella yksinkertaisesta ja minä en sitä tajunnut, älkää lyökö lujaa :)
lainaus:
Käyttis on Windows 98 ja olen Borlandilla yrittänyt kääntää ko. ohjelmaa MS-DOS-tilassa operoiden.
Miksi? Minusta on paljon kätevämpää tehdä se Windowsissa, MS-DOS-kehotteessa tai peräti makella...
Mutta ongelmastasi sen verran, että ongelmat eivät liittyne Allegroon vaan itse Borlandin kääntäjän vakio-otsikkotiedostoihin (vai mikä nyt lienee oikea termi).
Hakuammuntaa, mutta kokeile kääntää tuo C-tiedostona. Tai includeta allegro.h seuraavasti:
extern "C" { #include <allegro.h> }
En itse ole koskaan tohon Borlandiin oikein luottanut. Mutta mikäs se tuo END_OF_MAIN() tuolla alhaalla on? Onko se ANSI-C++:aa?
End_OF_MAIN() on niitä Allegron juttuja.
Onkohan se end of main väärässä paikassa?
Mä en tiä tost allegrosta mitään mut luulisin et siihen tarvii linkittää joku 'allegro.lib', josta ne funkiot, jotka on määritelty 'allegro.h':ssa, löytyy.
pah, openGL+D3D
lainaus:
Onkohan se end of main väärässä paikassa?
Tuo sorsa on suoraan kopioitu eräältä allegro.cc:ssä suositellulta sivulta. Ajattelin tehdä niin, että kaikki ilmenevät ongelmat olisivat nimenomaan kääntäjän syytä, eikä koodia pitäisi enää "tweakata"...
Mitä kääntäjä sanoo jos renametat tuon filun "Noname1.c":ksi ja käännät?
Koitapa lukea suomipelit.com:in Allegro tutoriaali. Jos vaikka olis apua. Siinä ei muuten ollut mitään END_OF_MAIN() hommaa. Mielestäni tuo on sairain C/C++ rivi mitä olen nähnyt. Näyttää funktio kutsulta, mutta on varmaan toteutettu #definellä
lainaus:
Koitapa lukea suomipelit.com:in Allegro tutoriaali. Jos vaikka olis apua. Siinä ei muuten ollut mitään END_OF_MAIN() hommaa. Mielestäni tuo on sairain C/C++ rivi mitä olen nähnyt. Näyttää funktio kutsulta, mutta on varmaan toteutettu #definellä
IIRC, Windowsille käännettäessä (ja eräissä muissa tpaauksissa) vaaditaan tuo END_OF_MAIN(), suomipelit.comin tutoriaalit ovat DJGPP:lle.
Aihe on jo aika vanha, joten et voi enää vastata siihen.