Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

graphics.h ???

silvsurf77 / 17 Antworten / Flachansicht Nickles

moins,

ich habe mir einen source-code (matrix-screensaver) unter planet-source-world.com heruntergeladen der die header graphics.h benötigt. diese ist aber in vs c/c++ nicht enthalten, also habe ich das internet durchsucht und rausgefunden das man diese selber schreiben muss. woher soll ich als anfänger wissen was für funktionen ich in diese header integrieren muss? was muss da rein?

greetz silvsurf77

bei Antwort benachrichtigen
thomas woelfer silvsurf77 „ok, da hast du wohl recht... aber ich kann die prototypen konstanten direkt in...“
Optionen

mal sehen...

zunaechst einmal: wenn du auf eine antwort antwortest statt immer direkt unter deiner urspruengliche frage zu posten, dann waere es sicherlich einfacher dem gespraecht zu folgen. (sowas nennt man einen thread, und das wird auf nickles.de prima unterstuetzt.)

das du konstante verwenden kannst ist ja klar - da gehts ja tatsaechlich nur um textersetzung.

wenn du hingegen selbst einen prototypen eintippst und die zugehoerige funktion dann aufrufst: aus welchem himmel soll denn dann die implementierung der funktion fallen?

die implementierung der funktion muss ja irgendwie mitgelinkt werden, ansonsten wuerdest du vom linker 'unresolved externals' angemeckert bekommen. (schon mal daruber nachgedacht aus welchem himmel die funktion die du da aufrufst denn nun faellt?)

wenn das nicht passiert, wird die library in der sich die funktion befindet also mitgelinkt. das bedeutet, das du diese library auch besitzt - und das wieder bedeutet das du mit recht grosser sicherheit auch die 'richtigen' headerfiles dafuer ist. (im fall von sowas wie puts() ist das kein wunder, denn die standard c library ist mit (korrekten) header-files _und_ der library bei jedem compiler datei.)

mal angenommen du schreibst einen eigenen prototyp fuer 'puts()' und rufst die funktion dann auf - und das geht auch: das bedeutet unweigerlich, das du die standard 'c' library mitlinkst - denn da befindet sich diese funktion drin. irgendwer muss sich also darum kuemmern das das der linker weiss, das das ding mitgelinkt werden soll. das passiert entweder

- ueber einen linker-switch
- ueber einen eintrag im einem header-file, das dazu fuehrt das im objekt-file ein eintrag hinterlassen wird der wiederum dazu fuehrt das der linker weiss was er mitlinken soll oder
- der linker linkt bestimmte bibliotheken 'per default' immer mit.

ist nichts davon gegeben, dann kannst du so viele prototypen tippen wie du willst - du wirst das program nicht linken koennen.

das wiederum bedeutet auch eine ganz einfache sache: dein prototyp muss _wirklich_ _richtig_ sein. in einem normalen headerfile fuer eine bibliothek werden eine ganze reihe an dingen abgehandelt die per praeprozessor gesteuert werden koennen und einen einfluss auf den prototyp der funktion haben. (z.b.: wie gross ist ein int...)

wenn dein 'von hand' prototyp nicht exakt passt, gehts nicht. wenns zufaellig doch richtig ist - glueck gehabt. allerdings: tritt dann eine aenderung ein (z.b. durch einen anderen compiler-switch, durch den bedarf ein bestimmtes symbol zu definieren etc. pp.) - dann gehts wieder nicht.

lange rede kurzer sinn: wenn du eine library (code) eines dritten verwenden willst, dann solltest du auf jeden fall auch dessen headerfiles verwenden - ansonsten kommst du uber lang oder kurz in teufels kueche (und das voellig zu recht.)

zu lib und h: das problem ist, das du beides nur dann bekommst, wenn du irgendwie an den passenden compiler kommst wo das ding dabei ist. der letzte verfuegbare compiler dafuer ist meines wissen vc++ 1.3 / 16bit - vielleicht bekommst du den ja irgendwo (ebay ?).

ansonsten musst du nach einer 'kompatiblen' 16bit graphics bibliothek suchen (hint: vergiss es, du bist bei weitem nicht der erste der dieses problem hat und es _gibt_ so ein ding nunmal nicht.) oder aber du verwendest eine andere graphik-bibliothek fuer dos (sowas wirst du schon als freeware finden - allerdings wird die eben nicht mit der von microsoft kompatibel sein. das wiederum bedeutet du wirst den screensave code nicht uebersetzen koennen.) - oder aber, du implementierst die funktionen die du brauchst in kompatibler version selbst.

letzteres duerfte etwas schwierig werden: wie die funktionen heissten ist ja noch herauszubekommen, das sagt dir schliesslich der compiler. was die aber tun duerfte etwas schwieriger herauszufinden sein: du hast ja nicht einmal die doku zu graphics.h :-)

sorry - aber wenn du den compiler nicht hast, dann lautet mein rat: lass es bleiben.

wenn du unbedingt einen bildschirmschoner im quellcode haben willst an dem du auch aendern kannst, dann wirf mal einen blick auf die vc# community editon (beta) - da ist naemlich alles dabei was du brauchst, und zwar einschliesslich des quellcodes fuer einen (windows)bildschirmschoner: und das ganze ist auch noch umsonst.

WM_MY0.02$

this posting contains no tpyos.
bei Antwort benachrichtigen
achso, nachschlag thomas woelfer
achso, nachschlag silvsurf77