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;
}
}