¿Cuál es la diferencia entre los archivos .LIB y .OBJ? (Visual Studio C++)

1 minuto de lectura

Sé que .OBJ es el resultado de compilar una unidad de compilación y .LIB es una biblioteca estática que se puede crear a partir de varios .OBJ, pero esta diferencia parece estar solo en la cantidad de unidades de compilación. ¿Hay alguna otra diferencia? ¿Es el mismo formato de archivo o diferente?

Llegué a esta pregunta cuando me preguntaba si la misma variable estática definida en dos (o más) .LIB se fusiona o no durante el enlace al ejecutable final. Para .OBJ, las variables se fusionan. ¿Pero es lo mismo en .LIBs?

Un archivo .LIB es una colección de archivos .OBJ concatenados junto con un índice. Tampoco debería haber diferencia en cómo trata el enlazador.

Parece que el archivo .lib es como una colección de archivos .obj. Algunas personas también consideran el proceso, que cambia varios archivos .obj a archivos .lib, como Archivo. En ese caso, el archivo .lib es un cuadro de archivo .obj, que el enlazador podría tratar por igual.

  • .lib en windows es igual que .a en linux

    – Shiplu Mokaddim

    14 de diciembre de 2012 a las 0:51

¿Ha sido útil esta solución?