Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Linker Fragen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.02.2006, 11:03 Uhr
~unknown
Gast


Hi, hab mal ein paar Verständnisfragen.
Ein Linker ist ja dazu da um externe Bibliotheken in seinem eigenen Programm verfügbar zu machen, nicht oder?

1. Was muss man beim Linker angeben. Jede Datei einzeln oder einfach nur das Verzeichniss, indem die ganzen Dateien liegen?
2. Muss ich die .h oder die .cpp Dateien einfügen?
3. Wenn ich nur die .h Dateien einfügen muss, woher weiß dann der Compiler, wo er die .cpp Dateien findet? Da in denen ja die Logik drin steckt.
4. Was ist der Unterschied zwischen dynamischen und statischem Linken? Gibt es überhaupt einen?

Hab schon gegoogelt aber irgendwie find ich kein richtiges Tutorial, wie z.B. bei den makefiles, über den Linker in C++.

Dank schonmal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2006, 12:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


zu 1. Der Linker fügt dir nur Objektdateien zusammen, also schon kompilierte. Normal musst du du da jede einzeln explizit angeben
2. Nein, der Linker hat mit cpp/h dateien nix am hut, das macht der compiler
3. Dem Compiler musst du schon die cpp-Dateien mitteilen welche er kompilieren soll
4. für dynamisches linken brauchst du immer auch einen part der statisch gelinkt wird.
Statisches Linken bedeutet, der Linker "kopiert" dir den kompletten Inhalt einer Library in dein Programm.
Dynamisches Linken bedeutet das dir der Linker nur "Verweise" auf Funktionen statisch bindet. (da drin steht dann z.b Funktion xyz sollst du aus dll xyz.dll laden) Die Eigentliche Funktion ist dann in der DLL, wenn diese nicht vorhanden ist, kann dein Programm nicht gestartet werden ("DLL xyz.dll nicht gefunden")
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2006, 13:41 Uhr
~unknown
Gast


Aha, ok danke erstmal.

Alles ist mir zwar noch nicht klar, aber es reicht um weitermachen zu können.

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.02.2006, 17:03 Uhr
Hans
Library Walker
(Operator)


Hi,

das ganze funktioniert so:
Du schreibst mit einem Editor die C- bzw. CPP-Dateien. Bei grösseren Programmen auch die eine oder andere .h (oder hpp) Datei. Diese verarbeitet der Compiler indem er da *.obj-Dateien draus erzeugt. Diese *.obj-Dateien verarbeitet der Linker zum fertigen Programm, indem er sie zusammen mit Teilen oder ganzen *.LIB-Dateien zusammen bindet. Das Ergebniss kann ein einzelnes ausfürbares Programm sein, oder eine DLL.
Wenn Du unter Windows Programme schreibst, die die grafische Benutzeroberfläche nutzen, kommen noch *.rc-dateien (die sogenannten Resourcen-Skripte) dazu, die vom Resourcen-compiler zu *.res-Dateien verarbeitet werden. Diese werden dann vom Resourcen-linker zum fertigen Programm dazu gebunden. Aber das braucht Dich Anfangs erstmal nicht zu kümmern.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.02.2006, 17:40 Uhr
Pler
Einer von Vielen
(Operator)


www.eng.hawaii.edu/Tutor/Make/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.02.2006, 18:56 Uhr
Hans
Library Walker
(Operator)


Hi Pler,

der Link sieht ja ganz gut aus, obwohl ich mir nur mal die ersten Seiten angesehen habe.
Das Problem ist, das die noch den Assembler als Zwischenschritt drin haben, der bei den meissten IDEs übersprungen wird, bzw. nur intern benutzen. Das könnte genau so verwirren, wie meine weiteren Ausführungen über Resourcen...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: