library in library

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
plip
Beiträge: 42
Registriert: 30. September 2008 16:37

library in library

Beitrag von plip »

Hallo,

ich habe folgendes Problem:

Ich erstelle mit dem QtCreator ein Projekt, mit dem ich eine statische library erzeuge. In diese binde ich wiederum eine weitere (externe) statische library ein.
Wenn ich jetzt die von mir erzeugte lib in ein andreres Projekt einbinde, meckert der Linker über die fehlende Verweise zu den Funktionen, die in der externen Lib implementiert sind. Das heißt ich muss diese zusätzlich einbinden.
Ist es möglich, den Inhalt der externen lib in meine eigene mit einzufügen, so dass ich nur diese einbinden muss?

Gruß
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: library in library

Beitrag von Christian81 »

nein, nicht wenn deine lib eine statische lib ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
plip
Beiträge: 42
Registriert: 30. September 2008 16:37

Re: library in library

Beitrag von plip »

Schade :(

Aber jetzt hab ich noch ein anderes Problem. Ich habe in meinem Applikations-Projekt zwar alle libs eingebunden aber der Linker beschwert sich plötzlich trotzdem über fehlende Funktionen, die sich in der externen lib befinden.

Woran kann denn das jetzt liegen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: library in library

Beitrag von Christian81 »

Die Reihenfolge ist bei statischen Libs manchmal wichtig
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: library in library

Beitrag von RHBaum »

Ist es möglich, den Inhalt der externen lib in meine eigene mit einzufügen, so dass ich nur diese einbinden muss?
Für .lib (also mit dem Microsoft compiler erstellte) libs gibts tools ... theorethisch koenntest Du das.
Bin sicher fuer .a (gcc erstellte libs) gibts auch was

Praktisch würd ich aber abraten von, weil dem "Luxus" statt 2 Bibs eine hinzuzufügen, stehen auch paar "Nachteile/Probleme" gegenueber.

- Wenn aber ein 3.er auf die selbe Idee kommt, und das mit Seiner Lib auch macht, und du aber bei nem Programm deine Lib und die des 3.ten brauchst, -> rums - doppelte Symbole.

- Wenn die externe Lib Änderungen erfaehrt, pflegst du die dann mit, oder nagelst du Dich auf eine Version fest ... -> deine Lib version ist Abhangig von ner Version ner anderen Lib, fuer vernuenftiges Versionsmanagment ne ganz dumme Sache.

Besser:
Arbeite dich in tools ein womit den Buildprozess automatiesieren kannst, dann ist der Aufwand des einbindens nicht mehr sooo gross ....
Für eigene executables / Dynamische Libs sollte es dann nicht mehr das Problem sein.

Willst deine Lib distributieren, kommt noch nen rechtlicher Aspekt hinzu ... Alle lizenzen in der Kette muessen zueinander kompatibel sein.
Und manche Bib-Ersteller moegen es nicht, wenn sie indirekt gelinkt werden. Am ende übernimmst du die Bib quasi ... d.h. es kommt fast das selbe raus als verendest den quellcode, rechtlich gesehen.
Darauf solltest noch achten ...
Woran kann denn das jetzt liegen?
Ohne mehr Infos , Compiler / Fehlermeldung .... etc koennen wir nur in die Glaskugel schauen ^^

Ciao ...
Antworten