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.

Rutas de búsqueda “/usr/local/include/glm/gtx” versus Uso de identificador no declarado ‘gtx’

Mac Big Sur C++ OpenGL intentando aprender cuaterniones a través de un tutorial.
Los encabezados de gtx están en /usr/local/include/glm.
¿Alguien puede averiguar qué está mal con mis inclusiones de encabezado o la ruta de búsqueda de encabezados? Gracias.

Código mínimo reproducible que falla para este problema:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h> // para ventana y teclado
#include <iostream>
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>
int main ( void )
{
    float t =1.0;
    // http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/
    glm::vec3 RotationAxis(0.0f,1.0f,0.0f);
    float RotationAngle = 90 * t;
    glm::quat MyQuaternion;
    MyQuaternion = gtx::quaternion::angleAxis(glm::degrees(RotationAngle), RotationAxis);
    return 0;
}

Error de compilación:

Use of undeclared identifier 'gtx'

que ocurre en la línea con gtx.

Mis fases de construcción / Rutas de búsqueda de encabezados / Depuración / Cualquier arquitectura:

/usr/local/include
/usr/local/include/glm
/usr/local/include/glm/gtx
/usr/local/Cellar
/glew/2.2.0_1/include/GL
/usr/local/Cellar
/glfw/3.3.4/include/GLFW
/usr/local/include/glad/include

Mis Rutas de búsqueda de bibliotecas:
$(inherited) /usr/local/Cellar/glew/2.2.0_1/lib /usr/local/Cellar/glfw/3.3.4/lib /usr/local/include /usr/local/include/glad/include

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la inclusión del encabezado. El espacio de nombres gtx no está declarado en el código, lo que está causando el error de compilación.

    Para solucionar este problema, agrega el encabezado glm/gtx/quaternion.hpp a tu declaración de inclusión. Esto incluirá el espacio de nombres gtx necesario y eliminará el error de compilación.

    Además, verifica tus Fases de compilación y Rutas de búsqueda de encabezados. Asegúrate de que la ruta a los encabezados sea correcta y que incluya los directorios necesarios para tus bibliotecas.

    Intenta modificar tu código de la siguiente manera:

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wdocumentation"
    #define GLEW_STATIC
    #include <gl glew.h="">
    #include <glfw glfw3.h=""> // para ventana y teclado
    #include <iostream>
    #include <glm glm.hpp="">
    #include <glm gtc/type_ptr.hpp="">
    #include <glm gtc/matrix_transform.hpp="">
    #include <glm gtc/quaternion.hpp="">
    #include <glm gtx/quaternion.hpp="">
    
    int main ( void )
    {
        float t =1.0;
        glm::vec3 RotationAxis(0.0f,1.0f,0.0f);
        float RotationAngle = 90 * t;
        glm::quat MyQuaternion;
        MyQuaternion = glm::gtx::quaternion::angleAxis(glm::degrees(RotationAngle), RotationAxis);
        return 0;
    }
    

    ¡Espero que esto te ayude!

Comments are closed.