ld.exe: error DWARF: no se pudo encontrar la especificación de la variable en el desplazamiento 101cee

Aug 20 2020

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

3 Chameleon Aug 20 2020 at 18:24

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 #definedirectiva correcta , todas las funciones exportadas obtienen un __declspec(dllexport)prefijo. Entonces se functionconvirtieron 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 -fltoopció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).