Foros del Web » Programación para mayores de 30 ;) » C/C++ »

error al compilar

Estas en el tema de error al compilar en el foro de C/C++ en Foros del Web. Me da el siguiente error al compilar el siguiente error al compilar: C:\Users\Javi\IMD\Practica Audio\ejercicio\averquesale.o:averquesale.c|| undefined reference to `generar' Lo que quiero es a traves del ...
  #1 (permalink)  
Antiguo 11/12/2010, 10:38
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 1
error al compilar

Me da el siguiente error al compilar el siguiente error al compilar:
C:\Users\Javi\IMD\Practica Audio\ejercicio\averquesale.o:averquesale.c|| undefined reference to `generar'

Lo que quiero es a traves del menu que creo, ir llamando a diferentes funciones segun la opcion elegida, pero no se como llamar a la funcion generar(que esta definida al principio tambien), la cual genera unos sonidos segun el caracter que pulse.

La funcion por si sola funciona si lo hago en un programa a parte en el main,ya que aqui si que cojo los argumentos argc y argv correspondientes, pero si quiero al intentar llamar a la funcion desde el main en este programa no se como hacerlo para pasarle esos argumentos ni como debe ser la cabecera de dicha funcion. ¿Me podeis ayudar?Gracias. Aqui os dejo el codigo.Un saludo






#include <stdio.h>
#include <stdlib.h> // Per al 'exit'
#define GLUT_DISABLE_ATEXIT_HACK
//#include <GLUT/glut.h>
#include <GL/glut.h>
//#include <OpenAL/alut.h>
#include <AL/alut.h>

// function prototypes ---------------------------------------------
int generar();

int main (int argc, char **argv)
{


char c;

do{

printf("Elija una de las siguientes opciones: \n\n");
printf("a.Generar señales simples.\n\n");
printf("b.Obtener version openAL y ALUT.\n\n");
printf("c.Mostrar dispositivos de audio.\n\n");
printf("d.Mostrar extensiones OPENAL.\n\n");
printf("e.Modificar PITCH de cada fuente.\n\n");
printf("f.Modificar GAIN de cada fuente y del oyente.\n\n");
printf("g.Cambiar la orientación del oyente.\n\n");
printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n");
printf("i. Modificar DOPPLER de cada fuente\n\n");
printf("j.Salir.\n\n");

c = getchar();


switch ( c )
{
case 'a':
generar();
break;
case 'b':
printf("Has elegido la Opción b");
break;
case 'c':
printf("Has elegido la Opción c");
break;
case 'd':
printf("Has elegido la Opción d");
break;
case 'e':
printf("Has elegido la Opción e");
break;
case 'f':
printf("Has elegido la Opción f");
break;
case 'g':
printf("Has elegido la Opción g");
break;
case 'h':
printf("Has elegido la Opción h");
break;
case 'i':
printf("Has elegido la Opción i");break;

}// switch

}

while ((c != 'j') && (c != 'J'));

//return EXIT_SUCCESS;

int generar(){
int argc;
char **argv;
ALuint buffers[6], fuente;
char p;

alutInit (&argc, argv);
p = 'h';

buffers[0] = alutCreateBufferHelloWorld ();
buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0);

alGenSources (1, &fuente);
printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n");

do
{
switch ( p )
{
case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
break;
case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
break;
case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
break;
case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
break;
case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
break;
case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
break;
}// switch

alSourcePlay (fuente);
alutSleep (1);
p = getch();
printf("%c\r", p); fflush(stdout);
} while ((p != 'q') && (p != 'Q'));

printf("\nTerminando ... \n");

alDeleteSources(1, &fuente);
alDeleteBuffers(6, buffers);

alutExit ();
return EXIT_SUCCESS;
}








}
  #2 (permalink)  
Antiguo 11/12/2010, 12:05
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: error al compilar

#include <stdio.h>
#include <stdlib.h> // Per al 'exit'
#define GLUT_DISABLE_ATEXIT_HACK
//#include <GLUT/glut.h>
#include <GL/glut.h>
//#include <OpenAL/alut.h>
#include <AL/alut.h>

// function prototypes ---------------------------------------------
int generar();

int main (int argc, char **argv)
{


char c;

do{

printf("Elija una de las siguientes opciones: \n\n");
printf("a.Generar señales simples.\n\n");
printf("b.Obtener version openAL y ALUT.\n\n");
printf("c.Mostrar dispositivos de audio.\n\n");
printf("d.Mostrar extensiones OPENAL.\n\n");
printf("e.Modificar PITCH de cada fuente.\n\n");
printf("f.Modificar GAIN de cada fuente y del oyente.\n\n");
printf("g.Cambiar la orientación del oyente.\n\n");
printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n");
printf("i. Modificar DOPPLER de cada fuente\n\n");
printf("j.Salir.\n\n");

c = getchar();


switch ( c )
{
case 'a':
generar(); llamada a la funcion generar
break;
case 'b':
printf("Has elegido la Opción b");
break;
case 'c':
printf("Has elegido la Opción c");
break;
case 'd':
printf("Has elegido la Opción d");
break;
case 'e':
printf("Has elegido la Opción e");
break;
case 'f':
printf("Has elegido la Opción f");
break;
case 'g':
printf("Has elegido la Opción g");
break;
case 'h':
printf("Has elegido la Opción h");
break;
case 'i':
printf("Has elegido la Opción i");break;

}// switch

}while ((c != 'j') && (c != 'J'));

} la funcion MAIN tiene que acabar aqui, puesto que el codigo de la funcion generar no puede estar dentro del main. dentro del main estara la llamada a la funcion: generar()


//return EXIT_SUCCESS;

int generar(){
int argc;
char **argv;
ALuint buffers[6], fuente;
char p;

alutInit (&argc, argv);
p = 'h';

buffers[0] = alutCreateBufferHelloWorld ();
buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0);

alGenSources (1, &fuente);
printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n");

do
{
switch ( p )
{
case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
break;
case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
break;
case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
break;
case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
break;
case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
break;
case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
break;
}// switch

alSourcePlay (fuente);
alutSleep (1);
p = getch();
printf("%c\r", p); fflush(stdout);
} while ((p != 'q') && (p != 'Q'));

printf("\nTerminando ... \n");

alDeleteSources(1, &fuente);
alDeleteBuffers(6, buffers);

alutExit ();
return EXIT_SUCCESS;
} aqui acaba la funcion generar






} esta sobra



quedaria asi:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h> // Per al 'exit'
  3. #define GLUT_DISABLE_ATEXIT_HACK
  4. //#include <GLUT/glut.h>
  5. #include <GL/glut.h>
  6. //#include <OpenAL/alut.h>
  7. #include <AL/alut.h>
  8.  
  9. // function prototypes ---------------------------------------------
  10. int generar();
  11.  
  12. int main (int argc, char **argv)
  13. {
  14.     char c;
  15.  
  16.     do{
  17.  
  18.     printf("Elija una de las siguientes opciones: \n\n");
  19.     printf("a.Generar señales simples.\n\n");
  20.     printf("b.Obtener version openAL y ALUT.\n\n");
  21.     printf("c.Mostrar dispositivos de audio.\n\n");
  22.     printf("d.Mostrar extensiones OPENAL.\n\n");
  23.     printf("e.Modificar PITCH de cada fuente.\n\n");
  24.     printf("f.Modificar GAIN de cada fuente y del oyente.\n\n");
  25.     printf("g.Cambiar la orientación del oyente.\n\n");
  26.     printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n");
  27.     printf("i. Modificar DOPPLER de cada fuente\n\n");
  28.     printf("j.Salir.\n\n");
  29.  
  30.     c = getchar();
  31.  
  32.  
  33.     switch ( c )
  34.     {
  35.         case 'a':
  36.         generar();
  37.         break;
  38.         case 'b':
  39.         printf("Has elegido la Opción b");
  40.         break;
  41.         case 'c':
  42.         printf("Has elegido la Opción c");
  43.         break;
  44.         case 'd':
  45.         printf("Has elegido la Opción d");
  46.         break;
  47.         case 'e':
  48.         printf("Has elegido la Opción e");
  49.         break;
  50.         case 'f':
  51.         printf("Has elegido la Opción f");
  52.         break;
  53.         case 'g':
  54.         printf("Has elegido la Opción g");
  55.         break;
  56.         case 'h':
  57.         printf("Has elegido la Opción h");
  58.         break;
  59.         case 'i':
  60.         printf("Has elegido la Opción i");break;
  61.  
  62.     }// switch
  63.  
  64.  
  65.     }while ((c != 'j') && (c != 'J'));
  66. }
  67.  
  68.     //return EXIT_SUCCESS;
  69.  
  70. int generar()
  71. {
  72.     int argc;
  73.     char **argv;
  74.     ALuint buffers[6], fuente;
  75.     char p;
  76.  
  77.     alutInit (&argc, argv);
  78.     p = 'h';
  79.  
  80.     buffers[0] = alutCreateBufferHelloWorld ();
  81.     buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
  82.     buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
  83.     buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
  84.     buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
  85.     buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0);
  86.  
  87.     alGenSources (1, &fuente);
  88.     printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n");
  89.  
  90.     do
  91.     {
  92.         switch ( p )
  93.         {
  94.             case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
  95.             break;
  96.             case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
  97.             break;
  98.             case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
  99.             break;
  100.             case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
  101.             break;
  102.             case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
  103.             break;
  104.             case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
  105.             break;
  106.         }// switch
  107.  
  108.         alSourcePlay (fuente);
  109.         alutSleep (1);
  110.         p = getch();
  111.         printf("%c\r", p); fflush(stdout);
  112.     } while ((p != 'q') && (p != 'Q'));
  113.  
  114.     printf("\nTerminando ... \n");
  115.  
  116.     alDeleteSources(1, &fuente);
  117.     alDeleteBuffers(6, buffers);
  118.  
  119.     alutExit ();
  120.     return EXIT_SUCCESS;
  121. }
  #3 (permalink)  
Antiguo 11/12/2010, 12:31
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: error al compilar

Muchas gracias por todo.

No me habia dado cuenta.

Etiquetas: compilar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:07.