Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2010, 10:38
boticheliss
 
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;
}








}