Ich arbeite in QT.
- Kann eine statische Bibliothek von einer anderen statischen Bibliothek abhängen? (Statische Bibliothek wird durch Verknüpfen einer anderen statischen Bibliothek erstellt.)
- Wenn ja, ist es möglich, dass die generierte lib (lib1) nach dem Verknüpfen mit lib2 nicht alle Codes von lib2 enthält?
In meinem Qt-Projekt verwende ich eine statische Bibliothek, die von mehreren Bibliotheken abhängt. Ich musste alle Bibliotheken (mit all ihren Headern in meinem Projekt) hinzufügen, obwohl ich nur eine Bibliothek (und eine .h dieser Klasse) in meinem Code benötige.
Bitte erläutern Sie das Szenario.
quelle
Meine kurzen zwei Punkte dazu: 10 (sorry schrecklicher Witz).
Um etwas zu erweitern, hier geht's:
1- Eine statische Bibliothek kann von einer anderen statischen Bibliothek abhängen, von nichts oder sogar von einer dynamischen Bibliothek: In den ersten beiden Fällen würde der gesamte Code für die neue statische Bibliothek in die neue SLL (Static Link Library) aufgenommen, jedoch die dritte Option , abhängig von der Umgebung, könnte dies dazu führen, dass die SLL eines der folgenden Ergebnisse erzielt:
Kurz gesagt, Sie können eine statische Bibliothek mit einer statischen Bibliothek verknüpfen
2- Wenn lib1 und lib2 beide statisch sind und lib1 mit lib2 verknüpft wurde, wäre die gesamte Funktionalität von lib2 in lib1 verfügbar, ohne dass lib2 eingeschlossen werden müsste, da lib2 statisch in lib1 verknüpft wäre (denken Sie an russische Puppen mit lib2 kleiner sein).
In dem von Ihnen beschriebenen Szenario muss in jeder der Dateien, die Sie einschließen müssen, eine diskrete Funktionalität verfügbar sein, die nicht statisch verknüpft ist. Daher sind mehrere Dateien erforderlich. Andernfalls müssten Sie eine einzelne Datei einschließen, und es wäre in Ordnung.
Nehmen Sie Folgendes: Eine .h-Datei mit Verweisen auf 6 statisch verknüpfte Bibliotheken: Sie müssten 7 Dateien in Ihr Projekt aufnehmen, um die volle Funktionalität zu erhalten
Für eine SLL, die aus dieser .h-Datei erstellt wurde, muss nur die neue SLL zum Verknüpfen bei der Kompilierung enthalten sein:
Hoffe das hilft und dass ich verstanden habe was du gefragt hast.
quelle