DevC++-ban grafika nem működik - hogyan orvosoljam?

DevC++-ban grafika nem működik - hogyan orvosoljam?
2019-07-03T11:30:12+02:00
2019-07-06T14:07:09+02:00
2022-10-15T21:36:10+02:00
Tomi_T2
Sziasztok!
Dev C++-ban próbálok grafikát készíteni, de hiába másolom be a megadott helyekre a letöltött graphics.h-t meg libbgi.a-t, mindig hibaüzenetet kapok a program futtatásakor.
Valaki tudna segíteni annak tisztázásában, hogy akkor PONTOSAN mit honnan kell letöltenem, hova bemásolnom és a fordító beállításaiban mit kell csinálnom, hogy működjenek a dolgok? Az interneten ahány hely, annyi válasz...
Ez lenne a kis programom, amire a hiba: 5 40 D:\DevCppProg\Torolheto\main.cpp [Error] 'initwindow' was not declared in this scope

#include "graphics.h" int main( ) { initwindow(400, 300, "First Sample"); circle(100, 50, 40); while (!kbhit( )) { delay(200); } return 0; }
Mutasd a teljes hozzászólást!
A libet a 32 bites részbe kell tenni: c:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32\
És persze fordítani is 32-bitesre kell.
Mutasd a teljes hozzászólást!

  • Honnan töltöttél le mit, és milyen leírás volt hozzá?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Benne van a leírásban - a magyarban - hogy melyik állományokat kell letölteni, és azokat hogyan kell a Dev C++ hozzáadni a projekthez. Alapvetően szerintem neked a fejlesztői környezettel van problémád, annak használatával, és a C programok felépítésével. 
    Ez van az oldalon:

    Először be kellszerezni a graphics header file-t, aztán a libbgi.a-t. A Dev C++ megnyitása után létre kell hozni egy új C projectet, majd a Project fülön, a Project Optionst kiválasztása. Azon belül a parameters, és a Linker-hez kell bemásolni

    Az oldal ahonnan letölthetők az állományok: Using the WinBGIm Graphics Library with Dev-C++

    Tehát minden le van írva, ami ahhoz szükséges, hogy a teszt programot le tudd futtatni. Ha ennyi nem megy, akkor ne probálkozz azonnal egy grafikus kód lefuttatásával, hanem kezdj valami egyszerűbb, konzolos alkalmazással. Illetve olvass utána a C programok fordításának és futtatásának a menetével.
    Mutasd a teljes hozzászólást!
  • ""Honnan töltöttél le mit, és milyen leírás volt hozzá?"

    Tehát, letöltöttem a graphics.h-t, a libbgi.a-t és a libwbgi.a-t az internetről.
    A graphics.h-t bemásoltam a
    C:\Program Files (x86)\Dev-Cpp\MinGW64\include
    mappába, meg a
    C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
    mappába is, mert ott is láttam ilyen .h kiterjesztésű állományokat.
    A libbgi.a és a libwbgi.a fájlokat a
    C:\Program Files (x86)\Dev-Cpp\MinGW64\lib
    mappába tettem.
    Ezek után a DevC++ megnyitását követően bemásoltam ezeket a sorokat a
    Projekt beállítások -> Paraméterek -> Linker-be és le OK-ztam:
    -lbgi
    -lgdi32
    -lcomdlg32
    -luuid
    -loleaut32
    -lole32

    Ezek után beillesztettem a kódszerkesztőbe a programkódot, ami rajzolna, és fordítás-futtatás során mégsem sikerült, mert hibát kaptam.
    Meg olvastam ezt is a világhálón:
    "• Töltse le a LIBWBGI.A és graphics.h fájlokat c:\Dev-Cpp\lib\ illetve a c:\Dev-Cpp\include\ könyvtárakba.
    • Indítsa el a DEV-CPP programot. Az Eszközök – Fordító beállításai menüben adja hozzá a C:\dev-cpp\lib\libwbgi.a -luser32 -lgdi32 kapcsolókat a linkerhez"
    De ez utóbbi sort nem tudom beírni, mert ha ENTER-t ütök az írás megkezdéséhez, akkor bezárja az ablakot, ha meg begépelem simán, akkor a már ott levő
    -static-libgcc
    számára galibát okozok.
    Egyébként Dev-C++ 5.9.2-t használok.
    Mutasd a teljes hozzászólást!
  • Írtam egy konzolos alkalmazást is, de azt meg Code:Blocks-ban nem tudom elindítani, mert ezt a hibát adja:
    Drawing operation was attempted when there was no current window.
    Történt mindez azután, hogy a C::B-ba is belepiszkáltam, megpróbálván grafikára késszé tenni, a következővel:
    A winbgim.h és a graphics.h a MingW mappa include mappájába, a libbgi.a pedig a lib mappájába kerüljön.
    A graphics.h-t meg kell nyitni egy szövegszerkesztővel és átírni a 302. sorban int top=0-ra az első int right-et (kettő van belőle, és ez hiba).
    Végül a Code::Blocks-ban: Settings/Compiler settings-ben Linker Settings fülnél "Add" a libbgi.a-t
    és az Other linker optionsba beírni:
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32

    Ez a konzolos programkódom pedig a következő:

    #include <iostream> #include <conio.h> //A getch-hoz kell! #include <windows.h> //A SetConsoleCursorPosition-hoz kell! using namespace std; int main() { int kilephet,elozokurx,elozokury; char gomb; COORD kurzorhely; //Fontos, hogy a COORD nagybetûkkel legyen írva! HANDLE billentyuzet; //Fontos, hogy a HANDLE is nagybetûkkel legyen írva! kurzorhely.X=40; kurzorhely.Y=20; kilephet=0; billentyuzet = GetStdHandle (STD_OUTPUT_HANDLE); SetConsoleCursorPosition(billentyuzet,kurzorhely); cout<<"*"; while (kilephet==0) { elozokurx=kurzorhely.X; elozokury=kurzorhely.Y; kurzorhely.X=1; kurzorhely.Y=1; SetConsoleCursorPosition(billentyuzet,kurzorhely); cout<<"k: kilépés"; kurzorhely.X=elozokurx; kurzorhely.Y=elozokury; gomb=getch(); switch (gomb) { case 'k': kilephet=1; break; case 'w': if (kurzorhely.Y>1) kurzorhely.Y-=1; break; case 's': if (kurzorhely.Y<40) kurzorhely.Y+=1; break; case 'a': if (kurzorhely.X>1) kurzorhely.X-=1; break; case 'd': if (kurzorhely.X<80) kurzorhely.X+=1; break; } SetConsoleCursorPosition(billentyuzet,kurzorhely); cout<<"*"; } }
    Mutasd a teljes hozzászólást!
  • Szerintem először parancssorból próbáld meg magad lefordítani a programot, akkor jobban rálátsz, hogy mi is történik, amikor a GUI-ban kattintgatsz, valamint így biztosan azt és úgy fordítja, ahogy szeretnéd.

    PATH környezeti változóba tegyed bele a fordító elérési útját, magyarul hogy ha felnyitsz egy konzolt, akkor a 

    g++ --version
    parancs lefusson.

    Fordításhoz meg ilyesmi:

    g++ my_source.cpp -o my_exe -I path_to_additional_include_dir -L path_to_additional_link_dir -l additonal_lib -O0 -g
    Dokumentációból is tutorialokból megtudod nézni, hogy melyik paraméter mit is állít és milyen egyéb paramétereket ismer a fordító.
    A fordítás menetének az ismerete nélkül bajban leszel nagyon hamar..
    Mutasd a teljes hozzászólást!
  • Most azt írja ki nekem futtatás után, hogy:
    cannot find -lbgi
    Pedig mindent a helyére másoltam, még egy WinBGIm csomagot is letöltöttem, ami beépíti magát a DevC++-ba.
    Teljesen tanácstalan vagyok... Most a tesómék gépén próbálkoztam egy frissen telepített DevC++-szal, de ugyanúgy működésképtelen  benne a grafikai rész.
    Mutasd a teljes hozzászólást!
  • cannot find -lbgi

    hát ha ezt írja, akkor az nincs ott, vagy nem abban az alkönyvtárban van ahol lennie kell, vagy ahol keresik.

    ahogy **G** is javasolta, kicsit lépj ki a DevC++ -ból, és parancssorból:
    - detektáld hol van a fordítód
    - ellenőrizd a fordítóban megvan-e minden
    - fordítsd le kézzel

    és attól függően hogy static vagy dynamikus volt a linkelés, a futtatónak is el kell érnie a lib-et, vagy nem kell elérnie. ezt is ellenőrizd.

    ha ez mind stimmel, mennie kell
    Mutasd a teljes hozzászólást!
  • A libet a 32 bites részbe kell tenni: c:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32\
    És persze fordítani is 32-bitesre kell.
    Mutasd a teljes hozzászólást!
  • Amúgy mihez kell a grafika?
    Nem vagyok benne biztos, hogy a BGI a legjobb választás..
    Mutasd a teljes hozzászólást!
  • Itt még video is van róla.
    Mutasd a teljes hozzászólást!
  • Most akkor az az igazi probléma, hogy nem tudod beállítani a könyvtárakat a kattintgatós felületen?
    Mutasd a teljes hozzászólást!
  • Készítettem én is egy kis videót az egész folyamatról; itt látható:
    Why can't I use graphics in Dev-C++? S.O.S!
    Mutasd a teljes hozzászólást!
  • "Amúgy mihez kell a grafika?"

    Egy játékszerű kis programot szeretnék csinálni. Magát a C++-t is így szeretném alaposabban megismerni, meg alkotni is vele, ha már egyszer állítólag ez az egyik leginkább használt nyelv a játékprogramozók körében (nyugi, én nem vagyok az, csak egy hobbi programozó).

    "Nem vagyok benne biztos, hogy a BGI a legjobb választás.."

    Sajnos másról nem tudok, de ha ez is van, akkor miért ne használhatnánk?
    Mutasd a teljes hozzászólást!
  • 32bites a '.a' könyvtár, te pedig 64 bites programot fordítanál, ezért írja, hogy inkompatibilis és nem talál megfelelő verziót.

    C++-os egyszerű játék fejlesztéshez talán ezt ajánlanám egy kezdőnek.
    Bár nem ismerem a könyvtárat, de sok anyag van hozzá és sok jót hallottam róla. Szárny bontogatáshoz biztos megfelelő lehet számodra, mindenestre egy bgi-től fényévekre van..

    Simple DirectMedia Layer - HomepageAjánlom, hogy ismerkedj meg a fordítóddal először parancssorból. Tanuld meg úgy használni, tudd mi a különbség a fordító és az IDE között, a fordítás menetével, stb.. Szóval az alapokkal.
    Ehhez nem fog grafikus felület kelleni egyelőre.
    Igen így nem olyan látványos, ez van, valahol kezdeni kell..

    (Régen azért működött, mert akkor még 32-bites fordítók voltak, újabb dev-cpp-be újabb fordítót tettek, amibe 64-bites verziója 64-bitre fordít alapértelmezetten, a bgi könyvtár pedig ősrégi 32-bites cucc. 32/64bitet nem lehet keverni egy applikáción belül.)

    Megpróbálhatod '-m32' flag hozzáadásával, hátha olyan verziója van a fordítónak beépítve a dev-cpp-be, ami támogatja a 32-bites targetet is..
    Mutasd a teljes hozzászólást!
  • $ objdump -a libbgi.a In archive libbgi.a: drawing.o: file format pe-i386 rw-rw-rw- 0/0 25840 Jul 02 14:14 2006 drawing.o misc.o: file format pe-i386 rw-rw-rw- 0/0 8663 Jul 02 14:14 2006 misc.o mouse.o: file format pe-i386 rw-rw-rw- 0/0 1768 Jul 02 14:14 2006 mouse.o palette.o: file format pe-i386 rw-rw-rw- 0/0 700 Jul 02 14:14 2006 palette.o text.o: file format pe-i386 rw-rw-rw- 0/0 10394 Jul 02 14:14 2006 text.o winthread.o: file format pe-i386 rw-rw-rw- 0/0 41377 Jul 02 14:14 2006 winthread.o winbgi.o: file format pe-i386 rw-rw-rw- 0/0 18220 Jul 02 14:14 2006 winbgi.o file.o: file format pe-i386 rw-rw-rw- 0/0 2631 Jul 02 14:14 2006 file.o dibutil.o: file format pe-i386 rw-rw-rw- 0/0 8516 Jul 02 14:14 2006 dibutil.o
    13 éves object fájlok vannak a statikus könyvtárba :)
    pe-i386 => 32bites..
    Mutasd a teljes hozzászólást!
  • Hát, bgi-vel nem sok játék készül(t), persze tanulásra nem a legrosszabb, de még hobbi célra is inkább bármilyen ma is használt technológiát kezdj el tanulni.

    Azért jobb lenne előbb valami erős C és C++ alapot építeni a hobbi játék készíteshez, és majd utánna elkezdeni játékot írni és grafikázni. Lépésenként tanulni és megmászni az emeleteket, nem azonnal a harmadikon kezdeni.

    De, nem adod fel, a videó is tök jó ötlet, hajrá :)

    csinálj egy új üres projektet, fordítsd le, és látni fogod amit keresel:

    Makefile Processor: C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\mingw32-make.exe
    - Command: mingw32-make.exe -f "C:\Users\admin\Documents\Makefile.win" all

    g++.exe -c main.cpp -o main.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
    g++.exe main.o -o Project1.exe -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc

    Itt vannak az alkönyvtárak.
    De ez még kevés lesz, mert valószínű alapértelmezetten van a compilered, azaz 64 bitest akar fordítani, az meg nem lesz jó.

    1: minden bezár
    2: Tools -> compiler -> 32 bit
    3: új project, main bemásol, linker option hozzáad
    4: fordít

    Így nekem sikeresen lefordult, de futni nem fut :)

    opengl, divx, ebbe én több energiát nem ölnék, rég halott cucc ez. De első lépésben C alapok, C++ alapok, kicsit ismerd meg a fordítás, linkelés, kapcsolókat, libeket, aztán mehet a divx/opengl.

    és valami jobb IDE -t is válassz, ettől szinte minden jobb szerintem: eclipse, netbeans, visual studio, codelite bármi
    Mutasd a teljes hozzászólást!
  • Végül sikerült megbirkóznom a nyavalyással; innen töltöttem le a szükséges két állományt (a BGI.zip-ből, mert a többit onnan nem lehet letölteni, mert védett a szerver):
    Using the WinBGIm Graphics Library with Dev-C++Valószínűleg ezek már 32 bites megfelelői a graphics.h-nak meg a libbgi.a-nak, mert lefutott a grafikus progi!
    AsyncWorker, mivel te javasoltad először a fordító átállítását 32 bitesre, ezért neked adnám a pontot. De nagyon köszönöm mindenkinek, hogy időt szakítottatok a problémámra!
    Mutasd a teljes hozzászólást!
  • C++-os egyszerű játék fejlesztéshez talán ezt ajánlanám egy kezdőnek.
    Bár nem ismerem a könyvtárat, de sok anyag van hozzá és sok jót hallottam róla. Szárny bontogatáshoz biztos megfelelő lehet számodra, mindenestre egy bgi-től fényévekre van..

    Simple DirectMedia Layer - Homepage

    Szerintem az SFML jobb választás számára, egyszerűbb és C++ nyelven írták, az SDL egy C könyvtár, ami rossz hatással lenne a C++ nyelvben való fejlődésére.
    Mutasd a teljes hozzászólást!
  • Hű, köszönöm szépen ezt a tájékoztatást is; az imént megnéztem és elég jónak tűnik a leírása alapján.
    De ezt is valahogy úgy kell beépíteni a Dev-C++-ba, mint a sima BGI-t? Tehát letöltés után kapok néhány .h állományt, és azt kell include-dal beépítenem a programomba?
    Mutasd a teljes hozzászólást!
  • 2.5 Tutorials (SFML / Learn)Getting started résznél van visual studio és codeblock-hoz leírás, valószínű abban az IDE-ben is hasonlóan kell beállítani amit használsz.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd