Kniznica Graph v C++
Mame vsak aj dovolene robit v C++. A mna by zaujimalo ci existuje takato kniznica aj pre C++. Cital som, ze v starom Turbo C bola presne taka kniznica graph.h a conio.h.
Je nejaka takato kniznica pre kompilator c++( g++, gcc)? (skusal som graph, graph.h, a pod.)
(Linux aj win veria by sa mi hodila)
Pre pridávanie komentárov sa musíte prihlásiť.

allegro je pre Linux, Windows, DOS pre ktory je kompilator DJGPP.
allegro je v C teda chces to v C alebo v C++ ??? to je rozdiel !!!
ja by som ostal pri pascale aovsem urcite nie Turbo Pascale.... skusil by som freepascal. a kniznicu GraphiX. skus to presadit v skole...
Freepascal ma niekolko vyhod a je aj pre Windows:
1. je multiplatformovy
2. je na neho viacej veci
3. stale sa vyvija
4. nema problemy s pametou pri vecsich strukturach oproti Turbo Pascalu.
5. podpora sice slaba ale predcsa Object Pascalu - konkretne implementacia Delphi ale fakt na nizkej urovni.
Tu je ta kniznica GraphiX:
http://www.cg.tuwien.ac.at/~knapp/graphix_old/gxframe.html
Free pascal mame uz davno povoleny. (Pracujem v Gvime s free pascalom na win.).
Avsak na linuxe mi akosi nechche najst unit Graph. Neviem preco asi nie je nainstalovany.
Mame samozrejme dovolene C++ a mozeme tam robit so standardnimi kniznicami (iostream, vector, string, algorithm, ...). No na grafiku neviem nic najst. Z dovodu, ze na maturitach je nutne vediet robit v pascale graficku s kniznicou graph, hladam preto nejaku podobnu kniznicu do c++, aby boli prikazy rovnake.
Allegro je podobna Graph?
(Lebo som ju nasiel v Dev-C++ Dev Pack a viem ju z tamad nainstalovat na win)
A je nejaka ekvivalentna kniznica ku kniznici graph v pascali?
A nejaka funkcna aj na win aj na linuxe ekvivaletne s rovnakimi prikazmi aj pre C++?
ale mozno by islo stiahnut stary turbo pascal pre dos ktory je v dnesnej dobe zdarma (pozor, verzia turbo pascal od borlandu, nie borland pascal, jedna sa o dva odlisne produkty) a pustit to cez napriklad freedos v qemu (vmware alebo niecom podobnom), popripade v dosboxe.
ps.: skoda ze odpovedam k pascalu a nie k c alebo c++. inak netusim ci vysla nejaka zadarmova verzia c/c++ od borlandu. rovnako netusim ci niekdo spavil port kniznice graph do linuxu. nieco ako conio (pre readln/writeln/gotoxy/...) bolo pred vela rokmi portovane aj na linux ale uz len z pohladu povodnej kniznice ktora predpokladala ze textovy mod je striktne 80x25 sa jednalo o zbytocnu robotu. conio nepoznalo iny textovy mod, mozno este okrem 40x25 ale v normalnych operacnych systemoch si v grafike roziahnes okno s textovym modom podla potreby. ano aj v saskovi zvanom win95/98 alebo windows nt zahrnujacom aj xp, v os/2 od ibm alebo v hociktorom unix like os vratane linuxu, solarisu, hpux, bsd, mac os x a desiatkach dalsich.
(Doma mam aj dokonca o tom knihu - o celej graph.h kniznici pre turbo c a unit graph pre turbo pascal).
A nie je mozne pouzit tuto kniznicu Graph.h do C++ (aspon na win/dos)?
A co to bol vlastne za Turbo C kompilator?
http://www.linuxos.sk/forum/11372/index.html
Je tam prerobena Grafika a nejak funguje aj na linuxe cez fpc.
No nieco podobne nie je urobene uz pre C++?
Bohuzial ide mi to len pod win.
http://www.uniqueness-template.com/devcpp/
na tejto stranke je popisane ako rozbehat graphics.h pod dev-c++.
Ja som oba subory stiahol, tam kde pisu a ked budem komplilovat s parametrami (aj cez gvim):
c++ -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 test.cpp
tak mi to bezi. Konecne. Pod windowsom uz to ide a mozem to pouzivat bez problemov v skole.
No ostava mi este problem doma s linuxom.
Skusal som to aj pod linuxom nasledovne:
1. stiahol som ten hlavickovy subor http://www.uniqueness-template.com/devcpp/graphics.h do /usr/include/
2. stiahol som .a lib kniznicu http://www.uniqueness-template.com/devcpp/libbgi.a do /usr/lib/
skusil som to skompilovat ale pisalo, ze nevie najst subor windows.h
tak som v stiahnutom hlavickovom subore graphics.h ten #include zakomentoval
potom mi pisalo chybu:
pali@Pali:~$ c++ -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 grafika.cpp
/usr/bin/ld: cannot find -lgdi32
collect2: ld returned 1 exit status
tak som zistil ze tieto kniznice sa nachadzaju v baliku deb mingw32-runtime.
Kedze sa nachadzaju v zlozke /usr/i586-mingw32msvc/lib/ tak som spustil kompilaciu s parametrom -L:
c++ -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -L"/usr/i586-mingw32msvc/lib/" grafika.cpp
no bohuzial to neslo, vypisovalo chybu:
Tuto chybu mi vypisovalo aj na windowse ak som nedal tie parametre -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
Da sa nejak tato chyba opravit? Aby to behalo aj na linuxe? Co je to vlastne za chyba?
#include <graphics.h> int main() { initwindow(400,300); //open a 400x300 graphics window moveto(0,0); lineto(50,50); while(!kbhit()); //wait for user to press a key closegraph(); //close graphics window return 0; }A tato win kniznica mi stale nejde.
Zaujima ma: co mi to vlastne za chybu vypisuje?
grafika.cpp:(.text+0x30): undefined reference to ...
co to ma znamenat?
Ale pridam podrobnejsi:
pali@Pali:~/test$ g++ -v -Wall -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -lbgi -L"/usr/i586-mingw32msvc/lib/" grafika.cpp Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnu Thread model: posix gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) /usr/lib/gcc/x86_64-linux-gnu/4.1.3/cc1plus -quiet -v -D_GNU_SOURCE grafika.cpp -quiet -dumpbase grafika.cpp -mtune=generic -auxbase grafika -Wall -version -fstack-protector -fstack-protector -o /tmp/cc0dUV9t.s ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../x86_64-linux-gnu/include" ignoring nonexistent directory "/usr/include/x86_64-linux-gnu" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/4.1.3 /usr/include/c++/4.1.3/x86_64-linux-gnu /usr/include/c++/4.1.3/backward /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.1.3/include /usr/include End of search list. GNU C++ version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) (x86_64-linux-gnu) compiled by GNU C version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 314e40ef806a2ac99503aa9249be7d4c as --traditional-format -V -Qy -o /tmp/cc4ONrO6.o /tmp/cc0dUV9t.s GNU assembler version 2.18 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.18 /usr/lib/gcc/x86_64-linux-gnu/4.1.3/collect2 --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.1.3/crtbegin.o -L/usr/i586-mingw32msvc/lib/ -L/usr/lib/gcc/x86_64-linux-gnu/4.1.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.1.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -lbgi /tmp/cc4ONrO6.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.1.3/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.1.3/../../../../lib/crtn.o /tmp/cc4ONrO6.o: In function `main': grafika.cpp:(.text+0x30): undefined reference to `initwindow' grafika.cpp:(.text+0x3f): undefined reference to `moveto' grafika.cpp:(.text+0x4e): undefined reference to `lineto' grafika.cpp:(.text+0x53): undefined reference to `kbhit' grafika.cpp:(.text+0x66): undefined reference to `closegraph' collect2: ld returned 1 exit status pali@Pali:~/test$subor grafika.cpp:
#include <graphics.h> int main() { initwindow(400,300); //open a 400x300 graphics window moveto(0,0); lineto(50,50); while(!kbhit()); //wait for user to press a key closegraph(); //close graphics window return 0; }kniznice libgdi32.a libcomdlg32.a libuuid.a liboleaut32.a libole32.a su v priecinku /usr/i586-mingw32msvc/lib/ a su instalovane z deb balika mingw32-runtime zo standartnych ubuntu apt repozitarov
kniznica libbgi.a sa nachadza na stranke http://www.uniqueness-template.com/devcpp/libbgi.a > dal som ju do aktulaneho priecinka a aj do /usr/lib/
hlavickovy subor graphics.h sa nachadza na stranke http://www.uniqueness-template.com/devcpp/graphics.h > dal som ho tiez do aktulaneho priecinka a aj do /usr/include/
--> tento subor som trochu upravil (vid vysie)
http://zaher14.blogspot.com/2007/01/graphicsh-in-linux.html
nainstaloval som to. Bez chyb.
Potom som skompiloval ten ukazkovy subor z tej stranky. Bez chyb.
Spustil som a vypisalo chybu: tak som hladal kniznicu kde sa nainstalovala a nasiel som ju v /usr/local/lib. Tak som spravil odkaz do /usr/lib a uz mi to konecne funguje.
Takze funkcnost graphics.h pod linuxom aj win mozeme uzavriet, lebo uz bez problemov funguje.
Ale stale mi nefunguje unit graph pod fpc
stiahol som deb balik http://packages.ubuntu.com/hardy/fp-units-gfx a vsetky jeho zavislosti.
V komentari balika pisu, ze je tam podpora unitu Graph
Nainstaloval som vsetky tie baliky (aj zavislosti) a nefunguje to.
Pri kompilacii fpc vypisuje chybu: preco to nejde? ved v komentari balika pisu, ze je pre to podpora
vypis test1.pas:
-static