Título: Undefined reference to 'WinMain@16' Publicado por: Schrödinger en 26 Febrero 2013, 21:34 pm Buenas a todos, estoy haciendo un programita en C y a la hora de compilar me da el error que da título al post. He estado buscando por la red y parece ser que ese error ocurre cuando está mal definido el main. El caso es que he repasado el codigo unas cuantas veces y no encuentro nada. Os lo pego a ver si podéis echarle un vistazo.
#include <stdio.h> #include <stdlib.h> //#define debug //saca datos por pantalla FILE *fout; double frandom(double min, double max) //FUNCION GENERAR RANDOM { /*Genera un número double random en el intervalo [min,max] */ return min+(max-min)*rand()/((double)RAND_MAX+1)); } // FIN DE FUNCION GENERAR RANDOM void histogram(double *dat, double *hist, int n_dat, int n_inter, double *d, double *m, double *M) //FUNCION HISTOGRAMA { /* Genera un histograma. Calcula el min y el max en funcion de dat para un mejor ajuste. *data input dat *hist output histdat n_data input nº de dat n_inter input nº de inter *d output ancho inter *m output min de dat *M output max de dat */ int i,k; double anch,min,max,norm; for (i=0;i<n_inter;i++) //Inicializo hist=0; min=-10000000; max=10000000; for (i=0;i<n_dat;i++); //Calculo max y min { if (dat<min) min=dat; if (dat>max) max=dat; } anch=(max-min)/n_inter; //calculo el ancho de intervalo if (anch==0) //¿problemas de redondeo? { printf("Error: No se pueden calcular los intervalos; max=%lf, min=%lf\n",max,min); exit(1); } for(i=0;i<n_dat;i++) //Calculo el histograma { k=(dat-min)/anch; hist[k]++; #ifdef DEBUG //Saca datos por pantalla printf("x=%f, H[%d]=%f\n",k*anch+min,k,hist[k]); #endif } *d=anch; *m=min; *M=max; norm=1,0/(n_dat*anch); for (i=0;i<n_inter;i++) hist*=norm; } //FIN DE FUNCION HISTOGRAMA void main(void) { #define PAS_MAX 100000 //defino nº de pasos máximo #define n_inter 100 //defino el numero de intervalos float min, max, pas, epsilon, delta,ini; double dat[PAS_MAX+1], hist[ninter]; int i; printf("Dame el min:\n"); //defino el rango y la posición inicial scanf("%f",&min); printf("Dame el max:\n"); scanf("%f",&max); printf("Dame el ini:\n"); scanf("%f",&ini); if (ini>max) //compruebo que la posición inicial esté dentro del rango { printf("Demasiado grande.\n"); exit(0); } else if (ini<min) { printf("Demasiado pequeno.\n"); exit(0); } dat[0]=ini; //¡La posición inicial es un dato válido! epsilon=(max-min)/100; //Preguntar dudas sobre el tamaño en relación al número de pasos, rango e histograma printf("Dame el numero de pasos:\n"); scanf("%f",&pas); if (pas>PAS_MAX) { printf("Demasiados pasos.\n"); exit(0); } for (i=1;i<pas;i++) //genero número aleatorio, calculo la nueva posición y la mando a la función histograma { delta=frandom(-epsilon,epsilon); ini=ini+delta; if (ini>max) //Soluciono el problema de los bordes ini=ini-max+min; else if (ini<min) ini=ini-min+max; dat=ini; } /* for (i=0;i<pas;i++) printf("%f\n",dat); */ histogram(dat,hist,pas+1,ninter,&anch,&min,&max); //Calculo del histograma #ifdef DEBUG //Escribo datos por pantalla en modo DEBUG for(i=o;i<n_inter;i++) printf("%d\t %f\t %f\n",i,i*anch+min,hist); #endif fout=fopen("hist.dat","wt"); //Abro el archivo, escribo los datos y lo cierro for (i=0;i<n_inter;i++) fprintf(fout,"%d\t %f\t %f\n",i,i*anch+min,hist); fclose(fout); } Título: Re: Undefined reference to 'WinMain@16' Publicado por: x64core en 26 Febrero 2013, 21:40 pm Establece el Entrypoint en tu cmpilador, si es VS podes usar esto:
#pragma comment(linker,"/ENTRY:main") "main" en tu caso Título: Re: Undefined reference to 'WinMain@16' Publicado por: Eternal Idol en 26 Febrero 2013, 23:15 pm El SUBSYSTEM debe ser CONSOLE y no WINDOWS. Si estas creando un proyecto asegurate que sea de consola.
|