2009-09-01 7 views
23

Ich weiß, OBJ ist das Ergebnis der Kompilierung einer Kompilierungseinheit und .LIB ist eine statische Bibliothek, die aus mehreren .OBJ erstellt werden kann, aber dieser Unterschied scheint nur in der Anzahl der Einheiten der Kompilierung zu sein . Gibt es einen anderen Unterschied? Ist es das gleiche oder ein anderes Dateiformat?Was ist der Unterschied zwischen .LIB- und .OBJ-Dateien? (Visual Studio C++)

Ich bin zu dieser Frage gekommen, wenn ich mich wundere, wenn die gleiche statische Variable, die in zwei (oder mehr) .LIBs definiert ist, beim Verknüpfen in die endgültige ausführbare Datei zusammengeführt wird oder nicht. Für .OBJs werden die Variablen zusammengeführt. Aber ist es das gleiche in LIBs?

Antwort

35

Eine .LIB-Datei ist eine Sammlung von .OBJ-Dateien, die zusammen mit einem Index verkettet sind. Es sollte keinen Unterschied darin geben, wie der Linker behandelt.

4

Es scheint wie die .lib-Datei ist wie eine Sammlung von OBJ-Dateien. Manche Leute betrachten auch den Prozess, bei dem mehrere .obj-Dateien in .lib-Dateien umgewandelt werden, als Archiv. In diesem Fall ist die .lib-Datei eine Box mit der Datei .obj, die vom Linker gleich behandelt werden kann.

+2

'.lib' in Windows ist dasselbe wie' .a' in Linux. –

Verwandte Themen