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.

GLUT – Referencia no definida a pressedButton(int, int)

Tengo un método main que contiene la función glutMotionFunc que recibe la función movimentoMouseBotaoApertado cuya firma es void movimentoMouseBotaoApertado(int, int). Tengo un archivo .h y .cpp, pero cuando importo el archivo .h en el archivo principal e intento ejecutar el código, aparece el error referencia indefinida a movimentoMouseBotaoApertado(int, int).

main.cpp

...

#include "mouse/mouse.h"
#include "desenha/desenha.h"

...
int main(int argc, char *argv[])
{
    glutInit(&argc, argv); // Siempre se necesita glutInit
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    inicializa();
    nomeDoPrograma();

    glutDisplayFunc(desenha);
    glutKeyboardFunc(teclado);
    glutSpecialFunc(teclasEspeciais);
    criarMenu();
    glutMouseFunc(gerenciaMouse);
    glutMotionFunc(movimentoMouseBotaoApertado);
    glutPassiveMotionFunc(movimentoMouse);
    glutReshapeFunc(alterarTamanhoJanela);
    glutMainLoop(); // Redibujando
}

movimentoMouseBotaoApertado.h


#ifndef MOVIMENTOMOUSEBOTAOAPERTADO_H_INCLUDED #define MOVIMENTOMOUSEBOTAOAPERTADO_H_INCLUDED void movimentoMouseBotaoApertado(int, int); #endif // MOVIMENTOMOUSEBOTAOAPERTADO_H_INCLUDED

movimentoMouseBotaoApertado.cpp

“`

#include <stdio.h>

void movimentoMouseBotaoApertado(int x, int y) {
printf("Botão apertado [%d,%d]", x, y);
}

“`</stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error “referencia no definida a movimentoMouseBotaoApertado(int, int)” sugiere que el enlazador no puede encontrar la implementación de la función movimentoMouseBotaoApertado. Para solucionar esto, asegúrese de enlazar correctamente el archivo movimentoMouseBotaoApertado.cpp al compilar el proyecto. Alternativamente, puede incluir la implementación de la función en el archivo movimentoMouseBotaoApertado.h colocando la siguiente línea al final del archivo:

    void movimentoMouseBotaoApertado(int x, int y){
      // código de implementación
    }
    

    Esto definirá la función en el archivo de encabezado y el enlazador podrá encontrar la implementación al compilar el archivo main.cpp.

Comments are closed.