Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

wofür sind .lib

MRPSV / 4 Antworten / Flachansicht Nickles

hi leutz

ich hab mit c++ angefangen und ein paar tutorials durchgearbeitet aber bisher wurde nich gesagt wofür .lib dateien benötigt werden

danke im voraus

bei Antwort benachrichtigen
thomas woelfer MRPSV „aso danke thomas hmm nochwas ... in msdn in der opengl referenz sind funktionen...“
Optionen

nein, so geht das nicht.

die header-dateien enthalten die prototypen fuer die funktionen: ohne den prototyp kannst du die funktion gar nicht aufrufen.

die implementierung der funktion befindet sich aber in der lib (tun wir mal fuer den anfang so, als waere das tatsaechlich der fall).

du must also das header-file im quellcode inkludieren, bevor du eine der funktionen deren prototypen sich darin befinden benutzen kannst. die library must du dann mitlinken (was oft mit hilfe eines #pragmas aus dem header automatisch passiert.)

es gibt also nichts "auszusuchen".

warum schreiben ich immer "tun wir mal fuer den anfang so, als waere das der fall" ?

ganz einfach: klassischerweise befindet sich der code tatsaechlich in der library (lib). unter windows ist es aber eigentlich ueblich, die implementierung in einer dll unterzubringen. im gegensatz zur library (lib) die schon beim linken gebunden wird, wird die dll aber erst zur ladezeit der anwendung geladen.

das macht aber dem linker kummer: er sieht auf basis deines quellcodes, das du eine funktion xyz() verwendest - und will diese auch unbedingt aufloesen. gaebe es nun keine library mit dieser funktion, dann wuerde der linker ein "unresolved external" (nicht aufzuloesendes externes symbol) unmeckern und du wuerdest kein .exe bekommen.

darum gibts auch die libraries: da ist aber in wirklichkeit nicht die implementierung drin (obwohl sie es durchaus sein koennte), sondern nur ein stub-code mit der gleichen signatur, die den linker befriedigt - und beim laden durch die implementierung in der dll ersetzt wird.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen