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
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...)
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
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.
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).
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
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.
− 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 :
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é ...
Le Tout est souvent plus grand que la somme de ses parties.
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
> 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.)
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.
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.
Le Tout est souvent plus grand que la somme de ses parties.
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.
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.
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.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Pas d'aide concernant le code par MP, le forum est là pour ça :)