es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema al compilar GLUT con CMake.

Necesito utilizar GLUT (sé que GLUT es una biblioteca antigua) para un proyecto. Cuando ejecuto el proyecto, obtengo errores de referencias indefinidas. Este es mi archivo CMake:

// Otro código

<h1> GLUT </h1>

<p> find<em>package(GLUT REQUIRED)
include</em>directories(${GLUT<em>INCLUDE</em>DIR})
target<em>include</em>directories(${PROJECT<em>NAME} PRIVATE "${GLUT</em>DIR}/include")
if(GLUT<em>FOUND)
    message("-- GLUT encontrado")
endif(GLUT</em>FOUND)</p>

<h1> OpenGL </h1>

<p> find<em>package(OpenGL REQUIRED)
include</em>directories(${OpenGL<em>INCLUDE</em>DIRS})
link<em>directories(${OpenGL</em>LIBRARY<em>DIRS})
add</em>definitions(${OpenGL<em>DEFINITIONS})
if(OPENGL</em>FOUND)
    message("-- OPENGL encontrado")
endif(OPENGL<em>FOUND)
target</em>link<em>libraries(${PROJECT</em>NAME} ${OPENGL<em>LIBRARIES} ${GLUT</em>LIBRARIES})

Cuando recargo el proyecto CMake, obtengo los mensajes “GLUT encontrado” y “OPENGL encontrado”, por lo que encontrar las bibliotecas no es el problema.
imagen de los mensajes de CMake
Al ejecutar mi proyecto, obtengo errores de referencia indefinidos:
imagen del mensaje de error
He mirado preguntas similares en StackOverflow, pero las soluciones propuestas no funcionan en mi caso.
Esta es mi estructura de archivos:
imagen de mi estructura de archivos

¿Alguien sabe una posible solución?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el enlazador no puede encontrar la implementación de las funciones declaradas en sus encabezados GLUT. Esto puede ocurrir si no ha vinculado correctamente su proyecto a la biblioteca GLUT.

    Para resolver este problema, asegúrese de haber vinculado correctamente su proyecto a la biblioteca GLUT. Al revisar su archivo CMake, parece que lo ha hecho usando target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES}). Asegúrese de que ${GLUT_LIBRARIES} apunte a la ubicación correcta de la biblioteca GLUT en su sistema.

    Además, asegúrese de incluir los encabezados correctos en sus archivos de código fuente. El encabezado GLUT debe incluirse de la siguiente manera:

    c++
    #include <gl glut.h="">

    Asegúrese de que la ubicación del archivo de encabezado GLUT esté incluida en los directorios de inclusión de su proyecto.

    Si estas soluciones no funcionan, intente limpiar su directorio de compilación y reconstruir su proyecto. Esto a veces puede resolver errores de referencia no definidos.

    ¡Buena suerte con su proyecto!

Comments are closed.