¿Que es un archivo .obj en LabWindows™/CVI™?

Actualizado el Jun 23, 2022

Reportado en

Software

  • LabWindows/CVI

Detalles del problema

Estoy intentando compilar un archivo antes de crear un ejecutable de mi proyecto de LabWindows™/CVI™ y puedo ver varios archivos con extensión .obj en la carpeta de mi proyecto. ¿Que uso tienen estos archivos y por qué es necesario mantener guardada esta información?

Solución

Los archivos de objeto ( .obj) son archivos intermedios generados por el compilador antes de crear un ejecutable. El archivo de objeto consiste de una tabla de símbolos y el código C compilado en código de máquina. La tabla de símbolos contiene una lista de funciones y la dirección del archivo objeto en donde se localiza el código para esa función en particular. Todos los compiladores generan los archivos objeto de diferente manera. El ligador es responsable de manipular las llamadas a funciones que se encuentran fuera del archivo de código C que ha sido compilado; busca las referencias a esas funciones en las tablas de símbolos de todos los archivos objeto que están disponibles. Si las referencias son encontradas, se ligan con el código, si no, se genera el error Undefined Symbol.

Para llamar a una función que se encuentra en un archivo objeto que no fue ligado al ejecutable al momento del enlazamiento en CVI, es necesario llamar a las funciones LoadExternalModule y GetExternalModuleAddress. La función LoadExternalModule carga el archivo objeto y su tabla de símbolos en memoria y encuentra la función en la tabla de símbolos. GetExternalModuleAddress regresa un apuntador a la dirección de la función que se desea llamar.