Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de compilation

Sujet résolu
7 décembre 2019 à 23:05:35

Bonjour, je débute dans la programation et pour aprendre je m'aide de cours en ligne mes je reconte un probleme lors de la compilation. Lors de la compilassion sa m'affiche l'erreur:

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'

collect2.exe: error: ld returned 1 exit status

L'erreur

mon programme

j'aimerais savoir comment régler l'erreur.

Merci d'avance.

(Pouvez vous me l'expliquer simplement de manière a se que je comprenne et  avec des capture d'écran si possible car je vien de commencer) 

-
Edité par KillianMandray 7 décembre 2019 à 23:09:17

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 2:31:41

Salut,
Je ne vois pas ton code (raison personnelle).
L'objet  WinMain@16  est-il une fonction?
Est-il possible que le nom soit incorrect ou que tu as placé ta fonction après le  main?
Tu utilises le compilateur Mingw et je remarque l'exécutable collect2.exe
«collect2.exe: error: ld returned 1 exit status»
Ce n'est pas le genre d'erreur qu'un compilateur retourne habituellement.
J'ai eu des problèmes avec ce compilateur. Je ne peux jurer que c'est la même chose pour toi.
Est-ce compliqué pour toi que de désinstaller ce compilateur? Saurais-tu en installer un autre?
Moi, j'utilise Mingw-w64 de sourceforge et je n'ai pas de problème.
As-tu un processeur 32 ou 64 bits? Mingw-w64 s'installe dans les deux modes.
D'après le chemin, le compilateur a été installé en mode 32-bits.
D'après le "C:\" tu serais sur Windows, peux tu dire quelle version?
  • Partager sur Facebook
  • Partager sur Twitter

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

8 décembre 2019 à 11:35:25

PierrotLeFou : c'est un code tout simple, le tout premier du cours je pense :

#include <stdio.h>

int main(void)
{
    printf("Hello !");
    return 0;
}

Du coup je soupçonne que KillianMandray n'arrive pas à compiler, tout court (pas seulement ce code là). Mais je ne vois pas pourquoi. Apparemment le compilateur croit que le programme appelle un truc appelé WinMain. Ça me fait penser à la version du main utilisé par les programmes utilisant l'API de Windows, or ce programme est destiné à la console. Peut-être un problème de paramétrisation de MinGW ? J'en sais rien (je n'interviens que pour aider Pierrot à aider Killian en lui montrant le code source sous forme de texte...)

-
Edité par robun 8 décembre 2019 à 11:36:12

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 12:34:53

Bonjours je vous remercie de  vos nombreuse réponse.

Pierrot: je pour te répondre je suis sur windows 10 avec un processeur 64bit alors je vais essayer d'installer Mingw-w64. moi aussi je le prend sur  sourceforge 

Le  WinMain@16 n'est pas une fonction de mon code. le code ses le tout premier du cours que j'ai trouvé.

Robun: pourrais tu m'expliquer comment le paramétrer .

Jai installer mingw w64 et sa me remet l'erreur 

C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): undefined reference to `WinMain'

collect2.exe: error: ld returned 1 exit status

-
Edité par KillianMandray 8 décembre 2019 à 13:56:34

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 12:53:26

Quand j'avais suivi le cours de C il y a quelques années, j'avais installé MinGW et Code::Blocks exactement comme expliqué dans le cours, et je n'ai pas eu de problème (sous Windows 7). C'est pour ça que je ne comprends pas ce qui se passe chez toi. Si tu souhaites désinstaller la version actuelle (si elle n'est pas 64 bits, ça me paraît une bonne idée), il faut probablement utiliser l'option de désinstallation d'un programme de Windows 10. Je n'utilise pas Windows 10 donc je ne sais pas comment on fait, mais cette option existait sous Windows 7 donc à mon avis tu vas la trouver.
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 14:01:11

Jai installer mingw w64 et sa me remet l'erreur 

C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): undefined reference to `WinMain'

collect2.exe: error: ld returned 1 exit status

je ne cromprend pas

je l'est installer en 64bit 

j'utilise visual studio code

-
Edité par KillianMandray 8 décembre 2019 à 14:06:27

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 14:29:40

Essaye ceci voir :

- Ouvre ton Code::Blocks

- Va dans l'onglet settings puis dans compiler...

- Une boite de dialogue s'ouvre, tu cherches la sous-section Toolchain executables puis tu cliques sur Auto-detect puis sur OK

Essaye de recompiler.

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 15:01:07

Il n'utilise pas Code::Blocks mais Visual Studio, si j'ai bien compris. Justement, ça vient peut-être de Visual Studio, qui est lié à Windows.

Killian : puisque tu compiles en console, tu devrais essayer d'écrire le code source dans un simple éditeur de texte, indépendant de Visual Studio (qui, peut-être, est réglé pour appeler WinMain).

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 15:11:39

Ce n'est pas "visual studio", mais "visual studio code".

L'erreur laisse penser en tout cas à un projet pour une appli avec API graphique pour Windows comme suggéré précédemment.

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 15:30:20

Re bonjour robun ses quoi que tu appelle simple éditeur de texte? ses un .txt ? Jai regarder sur google et sa vien peut être que ses un programme win32 et il faut que je le passe en console mes je sais pas comment le mettre en console 

Et Abel Rudy j'ai regarder les paramètre et j' ai rien trouver j'ai juste sa.                

-
Edité par KillianMandray 8 décembre 2019 à 15:37:11

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 16:09:54

Je ne connais pas Visual Studio Code.

Un éditeur de texte, c'est par exemple le Bloc Notes Windows, ou NotePad++. On tape du texte, mais au lieu d'appeler le fichier main.txt, on l'appelle main.c. Ensuite, depuis le répertoire où ce fichier a été enregistré, il suffit de lancer la commande de compilation « gcc main.c -o hello » comme tu l'as fait plus haut.

-
Edité par robun 8 décembre 2019 à 16:10:30

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 16:51:46

ok mon problème ses que les fichier.c s'ouvre directe avec visual studio code

il faudrait que je le désinstalle et utilise un autre ?

si oui le quelle me conseiller vous?

-
Edité par KillianMandray 8 décembre 2019 à 16:52:47

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 17:17:42

Il faut créer un projet et y ajouter ton fichier main.c !
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 17:59:20

− Concernant la méthode : je crée mon code source dans un éditeur et je le compile en console :

Sous Windows, on peut associer une extension (par exemple *.c) à un programme (par exemple Visual Studio Code). Pour ça, je crois qu'on clique avec le bouton droit, puis on clique sur "Propriétés" (souvent en bas du menu contextuel). Mais on n'est pas obligé d'utiliser le programme par défaut, on peut très bien cliquer sur le fichier avec le bouton droit, puis "Ouvrir avec" et choisir le bloc notes ou un autre éditeur éventuellement installé.

− Concernant la méthode : j'utilise un IDE à la fois pour créer le code source et le compiler :

Je crois que rouloude a trouvé le souci.

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 18:38:17

Merci la technique de rouloude a marché 

Merci de m'avoir aider ses supers cool 

mes la vidéo que j'avais vu il crée un dossier puis il cré un fichier *.c 

je vais garder se qui marche en attendant mes si vous pouvez m'éclaircir sur se sujet sa serrait cool car j'ai chercher partout mais rien trouver. 

robun: Peut tu mieux m'expliquer se qu'est un IDE stp

-
Edité par KillianMandray 8 décembre 2019 à 18:48:19

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 18:55:02

Salut,
En effet, ce code n'est pas très compliqué!
@KillianMandray:
Tu utilises visual studio code, c'est un IDE comme code::bloc. N'a-t-il pas son compilateur intégré?
Et je suppose qu'il n'y a pas moyen de savoir lequel?
Il semble que ce soit Mingw d'après le message d'erreur.
Dans ce cas, peu importe le compilateur que tu ajoutera, tu aura toujours le même problème.
Le message "collect2.exe: error: ld returned 1 exit status" est un symptôme d'un compilateur qui a des problèmes.
Encore chanceux qu'il t'en donne un. Ma version me disait de contacter le distributeur sans dire pourquoi il y avait erreur.
À moins que tu saches comment dire à ton IDE quel compilateur tu veux utiliser.
J'ai testé Mingw-w64 en mode 32-bits et il fonctionnait. Il est maintenant en 64-bits.
Je ne crois pas que ça soit la cause du problème.
Pour désinstaller Mingw, il y a habituellement un fichier du genre "uninstall.exe" dans le premier sous-dossier.
Je ne me rappelle pas très bien comment on désinstalle avec Windows.
Je pense que tu vas dans la zone d'édition du menu démarrer et tu cherches le compilateur.
Tu fais Menu contextuel et tu trouves une option désinstaller.
Comme je l'ai dit ailleurs, je n'utilise pas d'IDE. Je fonctionne avec cmd.
IDE: Integrated Development Environment
Ça suppose que l'éditeur, le compilateur et le déboggeur sont facilement accessibles sur ton écran.
Pour l'éditeur, il ne faut pas utiliser des éditeurs avec texte enrichi, comme Word ou Wordpad, les compilateurs y sont allergiques (il y a des codes "parasites").
Comme l'a dit robun, Bloc-Notes ou Notepad++ sont des bons éditeurs. C'est ce que j'utilise.
Avec W10, il est difficile d'associer un compilateur à un fichier avec suffixe .c (déjà associer Bloc-Notes n'est pas évident pour un novice).
Il ne suffit pas de cliquer sur le fichier main.c pour qu'il se compile. Même avec le Menu contextuel > Ouvrir avec ... Windows ne trouvera pas le compilateur.
Est-ce que Visual Studio Code est un produit Microsoft? Sinon, je ne saurais pas comment l'associer aux fichiers *.c, ni par le Menu Propriétés, ni avec Ouvrir avec ...
Et même avec le Panneau de configuration, malgré toute l'acrobatie, je doute qu'on puisse le faire. Microsoft est très protectioniste.
Moi, je passe en mode commande cmd avec Win+R et j'appelle gcc avec les paramètre appropriés.
Cependant, il faut connaître cmd au moins un peu.
Ensuite, il faut ajouter le chemin du compilateur dans la variable d'environnement  path.
J'appelle un script au début de ma session cmd pour initialiser certaines choses dont path.
Je fais un cd vers le dossier du source.
Si KillianMandray ne connait pas cmd, ça pourrait devenir compliqué ...
  • Partager sur Facebook
  • Partager sur Twitter

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

8 décembre 2019 à 19:06:47

Bonjours pierrotlefou: merci de ton aide mes le problème ses pas mon compilateur ou autre nan. ses juste que je devais crée le programme puis ensuite l'enregistrer ect. Mes mon fichier dans  le quelle il y avait mon programme se situait sur mon bureau donc je suppose que la cause du problème était sa car la je les enregistrer dans mes document et sa marche .

Merci de votre aide et de votre temps donner pour répondre a mon problème.

-
Edité par KillianMandray 8 décembre 2019 à 19:07:35

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 19:50:53

robun: Peut tu mieux m'expliquer se qu'est un IDE stp

Heu... tu es un peu lourd. Il faut expliquer ce qu'est un éditeur, ce qu'est un IDE... C'est un peu comme si, débutant en musique, tu demandais ce qu'est une clé de sol. ;) Pense à utiliser un moteur de recherche, par exemple DuckDuckGo qui respecte la vie privée.

(Un IDE est un environnement intégré de développement, en anglais ça fait IDE. Ça permet de taper son code source, de le compiler, de le déboguer, etc. à l'intérieur d'un même, heu, environnement.)

-
Edité par robun 8 décembre 2019 à 19:58:06

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2019 à 23:01:45

PierrotLeFou a écrit:

Est-ce que Visual Studio Code est un produit Microsoft? Sinon, je ne saurais pas comment l'associer aux fichiers *.c, ni par le Menu Propriétés, ni avec Ouvrir avec ...
Et même avec le Panneau de configuration, malgré toute l'acrobatie, je doute qu'on puisse le faire. Microsoft est très protectioniste.

Je ne comprends pas trop ce que tu veux dire. Au cas où VS code n'ouvre pas automatiquement un fichier .c, un clic droit sur le fichier en question, puis "Ouvrir avec" et le tour est joué.

Quant au protectionnisme de MS, en l'occurrence Vs code est open source et multiplate-forme. Comme quoi, rien n'est arrêté ad vitam eternam.

Pour le reste, VS code à l'origine n'est qu'un éditeur. Mais on peut effectivement en faire un IDE.

-
Edité par zoup 8 décembre 2019 à 23:04:36

  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2019 à 1:32:46

@zoup:
Ce que tu appelles "clic droit" (tu le fais avec la souris), j'appelle cela "Menu contextuel".
J'y accède avec la touche "Application" ou le raccourci Shift+F10.
Si je vais jusqu'à "Ouvrir avec", Windows ne me propose que des choix, SES choix.
Il n'y a pas de zone d'édition où je pourrais entrer le nom d'un programme de mon choix.
Il me suggère d'aller dans le Microsoft Store.
Robun a parlé d'aller plutôt dans propriétés et de se déplacer vers l'item"Modifier" qui fait la même chose (de façon permanente sans être obligé de dire "Toujours ouvrir avec cette application")
Pour VS, je ne le connais pas. Je ne l'ai pas installé sur mon ordi.
  • Partager sur Facebook
  • Partager sur Twitter

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

9 décembre 2019 à 1:58:01

PierrotLeFou a écrit:

Si je vais jusqu'à "Ouvrir avec", Windows ne me propose que des choix, SES choix.
Il n'y a pas de zone d'édition où je pourrais entrer le nom d'un programme de mon choix.
Il me suggère d'aller dans le Microsoft Store.
Sur mon ordi, hormis le fait que VS code fait partie des choix standard une fois installé, je peux choisir l'appli que je veux: sous "Rechercher dans le Microsoft store", il y a "Choisir une autre application", ce qui me semble logique.
  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2019 à 7:36:32

@zoup:
Je me rend effectivement dans un lien qui dit "Chercher une application sur ce PC".
Je tombe dans une zone d'édition qui me demande le nom du programme.
J'ai essayé plusieurs choses et rien ne marche.
J'ai même mis le chemin complet du compilateur et il ne trouve pas cela.
Sais-tu où il prend sa liste pour choisir?
Ça ne semble pas dans un des chemins de la variable path, ni sur le Bureau.
As-tu une idée?
  • Partager sur Facebook
  • Partager sur Twitter

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

9 décembre 2019 à 15:29:47

PierrotLeFou a écrit:

@zoup:
Je me rend effectivement dans un lien qui dit "Chercher une application sur ce PC".
Je tombe dans une zone d'édition qui me demande le nom du programme.
J'ai essayé plusieurs choses et rien ne marche.
J'ai même mis le chemin complet du compilateur et il ne trouve pas cela.
Sais-tu où il prend sa liste pour choisir?
Ça ne semble pas dans un des chemins de la variable path, ni sur le Bureau.
As-tu une idée?
Il faut naviguer jusqu'à sélectionner l'exécutable qui va lancer l'application recherchée. Pour un .c, on l'ouvre plutôt avec un éditeur qu'un compilateur.

  • Partager sur Facebook
  • Partager sur Twitter
9 décembre 2019 à 17:35:34

J'avais compris qu'il est préférable d'appeler un éditeur par défaut. J'ouvre déjà mes fichiers *.c et *.h avec Bloc-Notes.
Je voulais savoir si on pouvait faire autrement. KillianMandray semblait vouloir appeler un compilateur par défaut.
Par contre, mes fichiers *.html s'ouvrent avec mon navigateur par défaut. Mes fichiers *.bat et *.cmd s'ouvrent avec cmd.
Dans ces deux derniers cas, je dois passer par  Ouvrir avec  pour les éditer.
C'est correct car je les utilise vraiment beaucoup plus souvent que je les édite.
  • Partager sur Facebook
  • Partager sur Twitter

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

21 mars 2021 à 18:34:13

hey bro i'm solve your problem in 2 seconds..............

hehehehe...........can't you save your project ???????????????

first save your project (Ctrl+S) then open a terminal and command [gcc main.c ]

ok i know i'm doing great work...................see you'

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2021 à 19:12:30

Bonjour,

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

Pas d'aide concernant le code par MP, le forum est là pour ça :)