EXE LIB DLL OBJ
-
Hallo!
Wollte mal eine Thread aufmachen in dem die Basics zu den oben genannten FileTypen erläutert werden, da ich selber frustriert mit Linker Errors kämpfe, und ich glaube dass sich das mit mehr Backgroundwissen lösen lassen würde.
Noch dem ich in Google etwas gesucht habe bin ich auf folgendes gestoßen:
http://www.fortran.bcs.org/2003/porting/part_3/slide_06.html
Auszug (für den fall dass es die Seite mal nicht mehr geben sollte):.mod is a description of the contents of a F95 module emitted by the compiler when compiling a module read by the compiler when compiling a use statement located by the compiler using INCLUDE environmental variable .obj is a description of the program suitable for linking .lib is an index of the contents of a dll used by the linker .exp is an index of the symbols exported by a dll .exe is an executable program .dll is a dynamic link library located at run time using PATH env variable .def is a text file which tells the linker what to put into a .dll
Laut dieser Info müsste dann gelten das es keine DLL ohne LIB gibt und vice versa, d.h. keine LIB ohne DLL geben kann. Stimmt das??
D.h sobald ich einem Linker die DLL angebe muss ich ihm auch die LIB angeben da sonst eben diese scheußlichen Linkerfehler auftreten.
Kann man einem bestehende Programm auch eine LIB(DLL) anhängen. D.h. ist es möglich eine bestehende LIB um eine neue LIB zu erweitern?
Frage über Frage, hoffe ihr könnt Licht ins Dunkel bringen.
Lg THE_ONE
-
Die Erläuterung ist einfach unvollständig
.dll ist eine dynamische bibliothek und kann sehrwohl ohne .lib verwendet werden.
Nur dann musst DU dich um das laden kümmern, das passiert nicht automatisch.Verwendest du eine Import-library (.lib) und linkst diese (du brauchst die .dll dem Linker nicht zu nennen) geht das ganze dann automatisch
eine .obj kannste normalerweise auch immer dazu linken.
jetz kommt das spannende:
.lib kann auch eine static library sein, indiesem fall brauchste keine dll mitliefern zum ausführen des programmmes, da die funktionen statisch ins programm gelinkt werden, wie .obj's (aus deinen .cpp werden ja erst .obj's und dann .dll/.exe/.lib je nach typ)Allerdings sind .obj/.lib (import und static) COMPILERSPEZIFISCH, d.h. nicht kompatibel unter den compilern.
allerdings im falle einer import .lib lassen sich diese mit entsprechenden Tools convertieren oder aus der zugehörigen .dll erstellen.Ich hoffe deine Fragen beantwortet zu haben...
mfg branleb
-
Ich hänge gerade an einem Problem im Zusammenhang mit einer LIB-Datei.
Ich habe eine Lib-Datei die für Visual-C 6 erstellt wurde und unter diesem Compiler kann ich sie auch verwenden.
Nun möchte ich diese Lib-Datei aber mit dem GCC-Linker in ein Programm einbinden. Wie zu erwarten war, erzeugt dies eine ganze Menge Linker-Fehlermeldungen.
Gibt es eine Möglichkeit diese Datei doch noch mit meinem Programm via GCC-Linker zu vereinen?Danke schon mal im Voraus.
-
Kleiner Hinweis am Rand: Statische Libs sind einfach Archive die den binären Code enthalten und die sich mit Programmen wie 7ZIP auch öffnen lassen...
rya.