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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
die einzige datei mit diesem namen die ich kenne stammt aus der ms-dos version des microsoft 'c' compilers. das ding war der header fuer die graphik-bibliothek.
ich vermute mal, das der screensave-source den du da hast ein screensaver fuer ms-dos ist, und mit einem uralt compiler uebersetzt werden muss. bei _dem_ ist dann sowohl das headerfile als auch die zugehörige graphikbibliothek dabei: selbst machen kannst du das (eigentlich) nicht.
WM_SORRY
@Thomas Woelfer
jepp ist ein konsolen-prog.
//zum (eigentlich)
doch doch kann man selber machen - habe ja schon andere header geschrieben.
ne header ist doch nichts weiter als eine definition das an bestimmten stellen
im programm von dir geschriebener code durch anderen code (dem aus der header)
ersetzt wird.
//schau auch mal unter:
http://www.c-for-dummies.com/lessons/bonus/08/
WM_NICHTS_IST_UNMOEGLICH ;-)
silvsurf77
vielen dank, dass du mich ueber c header aufklaerst :-)
ich fuerchte allerdings, das du das nicht ganz begriffen hast.
in der theorie kann eine header datei natuerlich rein fuer textersetzung verwendet werden. in der praxis werden header-dateien aber im wesentlichen fuer etwas anderes verwendet. und zwar dafuer, die prototypen von funktionen aufzunehmen, die sich in linkbibliotheken befinden. (und zwar meist zusammen mit zugehoerigen strukturen und konstanten.)
es geht also nicht darum irgendwelche texte zu ersetzen, sondern darum, zugriff auf die funktionen aus einer bibliothek zu erhalten.
wenn du aber das headerfile zu bibliothek nicht hast, dann hast du die bibliothek sicher auch nicht.
dein problem besteht also nicht daraus irgendeinen header einzutippen, sondern ersteinmal die funktionalitaet aus der graphikbibliothek zu besorgen (zum beispiel indem du die selbst implementierst...) - und _dann_ kannst du dafuer einen header tippen.
selbst einen header fuer eine library eines dritten einzugeben ist hingegen nur wenig sinnvoll.
WM_FYI
ok, da hast du wohl recht...
aber ich kann die prototypen & konstanten direkt in der header definieren etc. und dann im prog aufrufen... hat jedenfalls immer geklappt.
also meinst du ich sollte mir weder lib noch h besorgen und alles selber schreiben?
boah... hast du ne ahnung wo man die infos bekommen kann was da drinne stehen muss
und wie man das am besten realisiert?
was heißt FYI?
silvsurf77
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$
FYI := for your inf_ormation
WM_CHEERS
ok, ich hab's verstanden. werde mir den anderen schoner mal anschauen & nach dieser doku suchen ( probleme sind ja da um gelöst zu werden und irgendwann werde ich mir die graphics.h schreiben *träum* )...
gruß & danke silvsurf77
irgendwann hatte auch borland mal fuer ihren dos compiler so eine library.
du kannst ja mal versuchen in erfahrung zu bringen ob der screensaver mit dem borland oder dem microsoft compiler gemacht wurde - den alten borland compiler gibts soweit ich weiss noch irgendwo bei borland zum download (kostenlos).
vielleicht hilft das ja :-)
WM_FYI
borland turbo c++ 3.0 ide hat er benutzt habe ich herausgefunden - ich denke den gibt es nicht kostenlos oder?
greetz silvsurf77
... aber vielleicht hilft ja auch tc++ 2.01: der gibts im borland museum
WM_HOPETHISHELPS
schaun wir mal ob tc 2.01 was bringt... wenn nicht besorge ich mir ein aktuelles borland c++ dann klappts bestimmt... aber zumindest ist die graphics.h und dos.h mit dabei - dann kann ich mir die erstmal in ruhe anschauen
WM_THANKSALOT
silvsurf77
Hi!
Evtl. hilft es ja weiter: es gibt folgende Compiler von Borland kostenlos:
Turbo C 2.01
Turbo C++ 1.01
Man bekommt sie nach Anmeldung hier: http://community.borland.com/museum
Dann gibt's noch das IDE lose C++:
Borland C++ 5.5 (ohne IDE)
http://www.borland.com/products/downloads/download_cbuilder.html
Ob da allerdings die gesuchte Header-Datei enthalten ist, weiss ich nicht (ich weiss auch nicht, ob hier DOS-Libraries enthalten sind.
Bis dann
Andreas
Hi!
jupp die ersten beiden habe ich schon (funktioniert auch ohne anmeldung - allerdings sind die versionen schon zu alt)...
die 5.5 funzt nur mit anmeldung und bislang bin ich noch nicht dazu gekommen mir diese anzuschauen - werde ich aber noch machen! und dann poste ich ob das damit klappt.
cya silvsurf77