Partage
  • Partager sur Facebook
  • Partager sur Twitter

undefined reference to `WinMain@16'

probléme

Sujet résolu
4 juillet 2006 à 12:06:39

Voila j'ai un probleme au likage il me marque : libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
Et le probleme c'est que je n'arrive pas a me débarrasser de ce message, quelqu'un pourait-il me dire comment s'en débarrasser svp?

Deplus je voudrait savoir si quelqu'un sourait dessiner avec openGL un coeur en 3d.
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 12:57:24

Alors pour winmain@16 c'est quand tu n'as pas bien declaré ton 'main'...
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 13:17:35

Mais pourtant je l'ai bien déclarer.
Mais voici le code je me suis peut-etre trompé :
#include <cstdlib>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include "constante.h"

void draw(int p_camY);

int main (int argc, char** argv)
{
int i = 1;
SDL_Event event;
int p_camY = 80;

SDL_Init(SDL_INIT_VIDEO);

SDL_Surface* screen = NULL;

screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(ANGLE,(double)800/600,1,1000);
glEnable(GL_DEPTH_TEST);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

while(i)
{
SDL_WaitEvent(&event);
switch(event.key.keysym.sym)
{
case SDLK_KP_MINUS:
p_camY--;
draw(p_camY);
break;

case SDLK_KP_PLUS:
p_camY++;
draw(p_camY);
break;
}
if(event.type == SDL_QUIT)
i--;
}
SDL_Quit();
return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 13:37:22

Il me semble que c'est :

int main(int argc, char* argv[])

et non pas ce que tu as mis qui est un pointeur sur pointeur.

P.S : La prochaine fois que tu pastes un code, utilise les balises prévues à cet effet dans les options de rédaction du message ;)
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 13:47:28

pour déclarer le main il y a 3 façons :

int main();
int main(int argc, char *argv[]);
int main(int argc, char **argv[]);


Donc normalement ça ne change rien dans son cas, surtout qu'un pointeur sur pointeur reviens presque au même qu'un pointeur sur tableau (je dis bien presque).
Par contre pour la SDL le 1er type de déclaration ne marche pas, alors peut être que le 3e non plus, mais j'en doute fort.
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 13:50:12

Ce ne serait pas plutôt :
int main(void);
int main(int argc, char *argv[]);
int main(int argc, char **argv);

Non ?
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 14:40:11

Si, "int main();" c'est mal.

Et SDL comprend "int main(void);" il me semble
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 14:42:15

tu tapes ton erreur dans google, tu as la fac SDL en liens, et comme par hazarre, ils expliquent comment resoudre ton probleme :-°
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 15:42:50

Merci pour votre aide mais pouriez aussi repondre ma seconde question svp car je voudrais faire un programme qui affiche un coeur qui tourne et le probléme c 'est que je sais pas le dessiner en 3d.
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 15:45:17

Ben lis le tuto d'OpenGL. C'est pour faire un cadeau à ta copine ? :p
  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2006 à 16:07:31

Oui, mais en faite c'est juste une amie.
Et merci encore de votre précieuse aide.
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2006 à 8:58:26

En fait, j'ai le même problème ... j'ai donc lu la FAQ mais ne suis pas sûr, d'avoir bien compris : est ce bien Winmain() qu'il faut mettre à la place de Main() ?
  • Partager sur Facebook
  • Partager sur Twitter
22 novembre 2006 à 19:32:38

j'ai le meme probleme et j'essaye de résoudre l'exercice 4 sur les tableaux.il me marque"[linker error] undefined reference to `WinMain@16'
pouvez vous me repondre svp ?
  • Partager sur Facebook
  • Partager sur Twitter
2 mai 2013 à 3:50:30

J'ai le même problème... Pourquoi ce topic est-il classé comme résolu ?
  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2013 à 21:16:12

Tu viens de faire ce qu'on appelle un déterrage de topique (ce que je re-fais par la mauvaise occasion :/ ).

-
Edité par Escargotine 29 septembre 2013 à 21:16:41

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2014 à 22:57:57

Désolé de devoir déterrer ce topic, mais j'ai le même problème. Je n'arrive pas à le résoudre.
  • Partager sur Facebook
  • Partager sur Twitter

N'hésitez pas à me contacter :p

16 octobre 2014 à 9:07:25

Si tu veux utiliser SDL tu as plusieurs possibilités, te linker à SDLmain ou une solution que je préfère (car j'aime pas qu'SDL modifie mon main).

#define SDL_MAIN_HANDLED
#include <SDL.h>

int main(void)
{
    SDL_SetMainReady();
    SDL_Init(...)
    // ...

    return 0;
}



-
Edité par markand 16 octobre 2014 à 9:08:45

  • Partager sur Facebook
  • Partager sur Twitter

l'azerty est aux dispositions ce que subversion est aux SCM

16 octobre 2014 à 13:54:17

Ah tiens, je connaissais pas cette technique, c'est bon à savoir.
  • Partager sur Facebook
  • Partager sur Twitter
7 octobre 2016 à 10:55:45

http://www.commentcamarche.net/forum/affich-33974586-undefined-reference-to-winmain-16
  • Partager sur Facebook
  • Partager sur Twitter
Drakar - Dev C
7 octobre 2016 à 11:43:11

Il me semble aussi que la SDL première version attendait un "int main(int argc, char *argv[])" car elle avait un define sur cela et qu'elle avait besoin de argc et argv.
Je ne sais pas ce qu'il en est pour la SDL actuelle.
  • Partager sur Facebook
  • Partager sur Twitter
17 juin 2017 à 18:44:28

Salut,

j'ai résolu ce probléme sous window avec le linker :

linker -> libglm.a

linker -> libSDL2.dll.a

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2017 à 23:16:19

salut
Moi aussi j'ai le même problème et j'essaie de déclarer la main suivante:
int main (int argc, char * argv [])
mais le problème n'est pas résolu quelqu'un peut m'aider.

-
Edité par Maarouf Med Mahdi 9 novembre 2017 à 0:41:11

  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2022 à 3:06:31

salut je debute en programmation j'ai galléré avant d'avoir mon outils gcc maintenant j'essais de compiler sur le terminal il me balance un long chemain aussi l'espace de stockage et tout en bas UNDEFINED REFERENCE TO `winmain@16`

tout cela met completement etranger s'il vous plait  pourriez-vous  m'aider

  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2022 à 4:09:15

@kinéliséetraoré:
Tu as déterré un vieux sujet déjà déterré par un autre ...
Je suppose que tu es sur Windows, non?
As-tu une fonction qui s'appelle 'main' ? Tu dois en avoir une.
int main(void) {
    // le code ...
}

-
Edité par PierrotLeFou 17 avril 2022 à 4:28:38

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

17 avril 2022 à 9:44:56

@kinéliséetraoré Bonjour, merci de ne pas déterrer d'ancien sujet résolu. Créer le votre en nous transmettant le code que vous avez écrit insérer sur le forum à l'aide du bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter