Kniznica Graph v C++

Sekcia: Programovanie 18.01.2008 | 12:48
Avatar Pali   Používateľ
V skole robime v pascali s kniznicou graph (prikazy line, lineto, bar, ...) rozne primitivne grafike programy (Pohybujeme s kvadrom)
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)
    • Re: Kniznica Graph v C++ 18.01.2008 | 13:04
      oo   Návštevník
      neviem, ci existuje presne taka ista(citaj "zaostala" ;)) kniznica aj pre C++, ale existuju ine a lepsie, napr. allegro, clanlib, SDL... hlavne allegro je dost jednoduche a kvalitne
      • Re: Kniznica Graph v C++ 18.01.2008 | 13:18
        Avatar Pali   Používateľ
        no ja kvoli tomu, lebo musime pracovat s tymi prikazmi co su v kniznici graph v pascali. Su v nejakej c++ kniznici presne take iste?
      • Re: Kniznica Graph v C++ 18.01.2008 | 15:51
        Avatar Miroslav Bendík Gentoo  Administrátor
        No skôr jednoduché než kvalitné. Už pár krát sa allegru podarilo zhodiť mi X ;)
        • Re: Kniznica Graph v C++ 18.01.2008 | 17:52
          skywaker   Návštevník
          Allegro myslim je asi najlepsou pre teba volbou.. vsetko je take ako graph az na rozsirenie o pracu s bitmapamy.

          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
          • Re: Kniznica Graph v C++ 19.01.2008 | 11:03
            Avatar Pali   Používateľ
            no mi musime robit s takimi prikazmi ako su v knizniciach crt a graph v pascale (jedno v akom- turbo alebo free)
            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)
            • Re: Kniznica Graph v C++ 19.01.2008 | 12:42
              Avatar Peter Rozum Arch Linux  Používateľ
              graph je v pascale problematicka kniznica, hlavne co sa linuxu tyka, takze pokial maturitne zadania predpokladaju ze vies s nou pracovat tak by som ti doporucil ostat pri tom pascale aspon co sa grafickych uloh tyka. pokial chces pisat programi s unit graph pod linuxom tak odporucam skusit rozbehat nejake ide alebo komplik cez wine (skusal som dev-pascal, ale tam sa ten graph tusim divne sprava) alebo cez dosbox.
              Everything is proceeding as I have foreseen.
              • Re: Kniznica Graph v C++ 22.01.2008 | 13:14
                Avatar Pali   Používateľ
                a preco vlastne ju nemam na linuxe? Nie je freepascal opensource? A nieje kniznica graph opensource, ze nie je pre linux?
                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++?
                • Re: Kniznica Graph v C++ 22.01.2008 | 18:34
                  Avatar Jaroslav Bernát BackTrack 3  Používateľ
                  ked nevieš, tak nefušuj
                  • Re: Kniznica Graph v C++ 22.01.2008 | 18:41
                    Avatar borg Fedora  Administrátor
                    mno, rozbehat to na dnesnych distrach bude fuska (mozno nainstalovat do virtualnej masiny nejake starsie distro). ale kylix je mrtvy.
                    • Re: Kniznica Graph v C++ 22.01.2008 | 18:44
                      Avatar Jaroslav Bernát BackTrack 3  Používateľ
                      mne v škole na mandrive beha ako lusk.
                      ked nevieš, tak nefušuj
                      • Re: Kniznica Graph v C++ 22.01.2008 | 18:46
                        Avatar borg Fedora  Administrátor
                        neni to nahodou len mandrake? aka verzia glibc tam je? kernel?
                        • Re: Kniznica Graph v C++ 22.01.2008 | 22:27
                          Avatar Jaroslav Bernát BackTrack 3  Používateľ
                          nie, je to mandriva 2006ka ...a kylix bol nahodený už pred tým ako som sa chopil toho železa takže ti neviem povedať podrobnosti, pracoval som v tom pár krát ked sa robilo pár projektov v delphi6. 2.6.18
                          ked nevieš, tak nefušuj
            • Re: Kniznica Graph v C++ 22.01.2008 | 19:38
              Avatar nardew debian  Používateľ
              myslim ze moc neuspejes, poradil by som pustat windowsovy pascal pod wine
              • Re: Kniznica Graph v C++ 23.01.2008 | 00:21
                WlaSaTy   Návštevník
                problem je v licencii, nie vsetko co daju v skolach je zdarma na vyucbu v skolstve (edu free lic.).

                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.
                • Re: Kniznica Graph v C++ 23.01.2008 | 08:54
                  Avatar Pali   Používateľ
                  no ako som este na zaciatku spominal. V kompilatore Turbo C bola kniznica Graph.h zahrnuta a fungovala.
                  (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?
                  • Re: Kniznica Graph v C++ 23.01.2008 | 22:57
                    WlaSaTy   Návštevník
                    odpovede na tieto otazky ziskas ked sa ti bude chciet najst download daneho balika ktory dala firma borland (alebo je to znova inprise?) zdarma na pouzivanie. link na subor je aj na tomto fore, tak isto sa da velmi lahko najst cez google.
                    • Re: Kniznica Graph v C++ 24.01.2008 | 14:11
                      Avatar Pali   Používateľ
                      no kniznicu Graph som nasiel riesenu vo fore
                      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++?
                      • Re: Kniznica Graph v C++ 08.02.2008 | 19:00
                        Avatar Pali   Používateľ
                        no hladal som dlllho po nete a nasiel som uz nieco funkcne pre C/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:
                        pali@Pali:~$ c++ -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 -L"/usr/i586-mingw32msvc/lib/" grafika.cpp
                        /tmp/ccbE8Ajk.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:~$
                        

                        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?
                    • Re: Kniznica Graph v C++ 08.02.2008 | 19:01
                      Avatar Pali   Používateľ
                      prikladam este ten testovaci 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; 
                        }
                      
                      • Re: Kniznica Graph v C++ 19.02.2008 | 20:48
                        Avatar Pali   Používateľ
                        no hladal som po internete ale pre linux som nic take nenasiel.
                        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?
                        • Re: Kniznica Graph v C++ 19.02.2008 | 21:53
                          Avatar Miroslav Bendík Gentoo  Administrátor
                          To znamená, že linker nevie nájsť dané funkcie / triedy / neviemčo.
                          • Re: Kniznica Graph v C++ 20.02.2008 | 16:01
                            Avatar Pali   Používateľ
                            a ako zistim, ze v ktorych knizniciach sa nachadzaju?
                            • Re: Kniznica Graph v C++ 20.02.2008 | 18:20
                              Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                              Vystup kompilatora je myslim dost zrozumitelny. Pripadne ho hod niekam a my ti to uz okomentujeme.
                              Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
                              • Re: Kniznica Graph v C++ 21.02.2008 | 16:33
                                Avatar Pali   Používateľ
                                nechapem co mam spravit. co sa ma okomentovat?
                                • Re: Kniznica Graph v C++ 21.02.2008 | 17:05
                                  Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                                  Pastni sem cely vypis z kompilatora, odkaz na tie kniznice, ktore pouzivas a my ti to uz okomentujeme :)
                                  Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
                                  • Re: Kniznica Graph v C++ 23.02.2008 | 13:12
                                    Avatar Pali   Používateľ
                                    no vypis z kompilatora je vysie.
                                    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)
                                    • Re: Kniznica Graph v C++ 23.02.2008 | 16:06
                                      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
                                      Problem je v tom, ze ta kniznica, ktoru chces linkovat (bgi) je pravdepodobne 32-bitova a ty vytvaras 64bit binarku. Bolo by dobre, ak by si zohnal zdrojak tej kniznice a prekompiloval by si si ju rucne. To by malo problem vyriesit. Inak, si si isty, ze ta kniznica je urcena pre linux a nie pre mingw32 pre windows? Moze totiz pouzivat volania winapi, ktore proste na linuxe nie su. Uz aj to, ze si si musel hlavickovy subor upravovat je toho znakom.
                                      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
                                      • Re: Kniznica Graph v C++ 23.02.2008 | 18:04
                                        Avatar Pali   Používateľ
                                        no nasiel som este toto:
                                        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:
                                        pali@Pali:~/libgraph-1.0.2$ ./test.out
                                        ./test.out: error while loading shared libraries: libgraph.so.1: cannot open shared object file: No such file or directory
                                        
                                        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:
                                        pali@Pali:~/fpctest$ fpc test1.pas
                                        Free Pascal Compiler version 2.2.0 [2007/12/11] for x86_64
                                        Copyright (c) 1993-2007 by Florian Klaempfl
                                        Target OS: Linux for x86-64
                                        Compiling test1.pas
                                        test1.pas(1,11) Fatal: Can't find unit Graph used by Program
                                        Fatal: Compilation aborted
                                        Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
                                        pali@Pali:~/fpctest$
                                        
                                        
                                        preco to nejde? ved v komentari balika pisu, ze je pre to podpora

                                        vypis test1.pas:
                                        uses Graph;
                                        var gd,gm:smallint;
                                        begin
                                        	initgraph(gd,gm,'');
                                        	rectangle(0,0,50,50);
                                        	putpixel(50,50,8);
                                        	moveto(10,10);
                                        	lineto(50,50);
                                        	readln;
                                        	closegraph;
                                        	readln;
                                        end.
                                        
                                        • Re: Kniznica Graph v C++ 27.05.2008 | 15:10
                                          Avatar Pali   Používateľ
                                          aby nebol problem pri spustani takeho c++ programu, kde nie je nainstalovana kniznica libgraph.so.1, da sa nejak skompilovat tento program aj s tou kniznicou (do jedneho spustitelneho suboru)?
                                          • Re: Kniznica Graph v C++ 27.05.2008 | 15:12
                                            Avatar borg Fedora  Administrátor
                                            ano, pouzi staticke linkovanie.
                                            • Re: Kniznica Graph v C++ 27.05.2008 | 15:15
                                              Avatar Pali   Používateľ
                                              ake su na to parametre pre g++?
                                              • Re: Kniznica Graph v C++ 27.05.2008 | 15:34
                                                Avatar borg Fedora  Administrátor
                                                man g++

                                                -static