2009-09-01 11 views
23

So che .OBJ è il risultato della compilazione di un'unità di compilazione e .LIB è una libreria statica che può essere creata da diversi .OBJ, ma questa differenza sembra essere solo nel numero di unità di compilazione . C'è qualche altra differenza? È lo stesso formato di file o diverso?Qual è la differenza tra i file .LIB e .OBJ? (Visual Studio C++)

Sono giunto a questa domanda quando mi chiedo se la stessa variabile statica definita in due (o più) .LIBs viene unita o meno durante il collegamento nell'eseguibile finale. Per .OBJ le variabili sono unite. Ma è lo stesso in. LIBs?

risposta

35

Un file .LIB è una raccolta di file .OBJ concatenati insieme a un indice. Non ci dovrebbero essere differenze nel modo in cui il linker tratta entrambi.

4

Sembra che il file .lib sia come una raccolta di file .obj. Alcune persone considerano anche il processo, che commuta diversi file .obj in file .lib, come Archive. In questo caso, il file .lib è una scatola di file .obj, che potrebbe essere trattata in modo uguale dal linker.

+2

'.lib' in windows è uguale a' .a' in linux. –

Problemi correlati