elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Undefined reference to 'WinMain@16'
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Undefined reference to 'WinMain@16'  (Leído 4,874 veces)
Schrödinger

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Undefined reference to 'WinMain@16'
« 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);

}


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Undefined reference to 'WinMain@16'
« Respuesta #1 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


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Undefined reference to 'WinMain@16'
« Respuesta #2 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.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
undefined reference to `SDL_GetPlatform' !!!!
Programación C/C++
<[(x)]> 6 4,282 Último mensaje 9 Julio 2010, 04:46 am
por <[(x)]>
template undefined reference : help.
Programación C/C++
bash 2 3,154 Último mensaje 2 Mayo 2011, 19:09 pm
por bash
Error: undefined reference to WinMain@16 [C] [solucionado]
Programación C/C++
SoyelRobert 3 24,897 Último mensaje 3 Enero 2014, 23:13 pm
por SoyelRobert
Error undefined reference to WinMain@16
Programación C/C++
daniel617 1 5,093 Último mensaje 29 Julio 2017, 13:08 pm
por ivancea96
MOVIDO: Error undefined reference to WinMain@16
Programación General
Eleкtro 0 2,934 Último mensaje 29 Julio 2017, 12:34 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines