ld.exe: error DWARF: no se pudo encontrar la especificación de la variable en el desplazamiento 101cee
Obtengo una salida masiva con el siguiente mensaje (diferenciado solo por la dirección hexadecimal):
ld.exe: DWARF error: could not find variable specification at offset 101cee
¿Cuál es el significado de este error en general?
Esto no sucede cuando se compila la versión de lanzamiento. Solo depurar build.
Respuestas
Básicamente, acabo de encontrar la solución. Lo coloco aquí, porque no encontré esa pregunta en StackOverflow. Responda si alguna de mis posiciones está mal.
Compilo una biblioteca como una biblioteca estática, pero sin la #define
directiva correcta , todas las funciones exportadas obtienen un __declspec(dllexport)
prefijo. Entonces se function
convirtieron en nombres de función __imp_function
.
Entonces, fue solo un undefined reference to __imp_function
.
Pero, ¿por qué está tan encriptado? ¿Y por qué la versión de lanzamiento se compiló correctamente?
Creo que esto sucede debido a la -flto
opción que vincula la optimización del tiempo y mantiene todo el código de la biblioteca dentro del archivo .a, por lo que no se necesitan referencias (sin fallas).