Dev C++ : Problème de compilation

Fermé
Carthoune - 15 oct. 2017 à 01:22
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 6 nov. 2017 à 10:42
Bonjour,



J'utilise Dev c++ pour mon cours d'intro à la prog, et nous codons en c.
J'ai de la difficulté à faire la compilation à certains moments mais pas à d'autres.
Je commence à écrire un programme, le compile, l'exécute. Une première fois, pas de problème. Légères corrections et je recompile et réexécute une deuxième fois. C'est encore okay. Etc. jusqu'à ce qu'une certaine compilation me donne cette ligne d'erreur :

C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe cannot open output file C:\Users\Catherine\Documents\UdeM\1. IFT 1810\TP1\geeks right now\ExempleDoWhile.exe: Permission denied.
C:\Users\Catherine\Documents\UdeM\1. IFT 1810\TP1\geeks right now\collect2.exe [Error] ld returned 1 exit status

Cela ne m'empêche cependant pas de lancer l'éxécution mais le programme ainsi exécuté ne correspond pas à celui qui est écrit dans mon projet mais à une version antérieure (celle de la dernière fois où la compilation a fonctionné).

Tentatives :

1 - J'ai essayé de réeinstaller dev c++. Pas de changements.

2 - Je me posais des questions quand à la compatibilité du compilateur avec Windows 7, puis j'ai changé dans [Tools > Compiler Options... > Programs] le programme qui était d'office dans la tab gcc (soit gcc.exe) pour x86_64-w64-mingw32-c++ (car il était suggéré sur un autre site que gcc fonctionnait mieux avec linux et que je devais plutôt sélectionner minw32_c++ (qui n'existant pas en tant que tel dans mon répertoire 'bin' ce qui m'a poussé à sélectionner celui avec le nom le plus semblable)).
Ce qui ne change absolument rien à mon problème.
Quelqu'un d'autre avait proposé de télécharger la version 4.9.9. Je vais tenter la chose.


Je crois que je m'entête à vouloir utiliser dev c++ puisque c'est l'éditeur de texte que le prof a conseillé en début de session.
Mais si je ne parviens pas à me démerder d'ici peu, je serais preneuse de suggestions d'autres programmes combinant l'édition et la compilation étant proches de dev c++.

Merci d'avance pour les propostions/solutions.
A voir également:

2 réponses

Yé, je suis arrivée à une conclusion similaire et ait trouvé la ligne :

int fflush(FILE*flush);

Que je met en début de programme pour vider la mémoire tampon/fermer le programme précédemment ouvert/qque chose comme ça.

Cela semble résoudre mon problème et me permet de modifier/compiler à nouveau.

Merci beaucoup!
1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 17 oct. 2017 à 11:02
Salut Carthoune,

Cela m'étonnerait beaucoup que une ligne "
int fflush(FILE*flush);
" que tu mettrais "en début de programme" fasse quoi que ce soit pour ton problème.

Cette ligne (telle que tu l'as écrite) se contente de (re)définir le prototype d'une fonction, qui, en fait, est une fonction standard déjà définie identiquement dans <stdio.h>

http://www.cplusplus.com/reference/cstdio/fflush/

La fonction (correctement utilisée) sert à purger la mémoire tampon de flux d'écriture en cours d'exécution d'un programme. Tu peux l'utiliser, par exemple, en passant
stdout
(pas stdin, qui est un tampon de lecture) ou un filehandle sur un fichier ouvert en écriture (comme dans l'exemple dans ce lien).

Cela dit, les tampons sont normalement vidés lorsque le programme s'arrête, et si le programme est planté et reste résident en mémoire, fflush au début de l'exécution d'une nouvelle instance en mémoire du programme ne permettra pas de flusher un tampon d'écriture d'un autre processus, ni de convaincre le système d'exploitation que le fichier exécutable correspondant au programme en cours d'exécution planté peut être réécrit.

Dal
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 17 oct. 2017 à 11:27
Autrement, tu disais :

dev c++ puisque c'est l'éditeur de texte que le prof a conseillé en début de session.

Dev C++ est un EDI. Le développement de la version d'origine Dev C++ sur www.bloodshed.net s'est arrêté en 2005, et si tu utilises des versions provenant de ce projet, il est possible qu'elles aient des bogues ou ne fonctionnent pas bien avec des systèmes d'exploitation actuels. Orwell a repris le développement pour cet EDI depuis 2011 : http://orwelldevcpp.blogspot.com/ et si tu tiens à utiliser Dev C++ tu devrais probablement t'assurer que tu a bien cette version.

Mais si je ne parviens pas à me démerder d'ici peu, je serais preneuse de suggestions d'autres programmes combinant l'édition et la compilation étant proches de dev c++.

Un autre EDI simple d'utilisation sous Windows est Code::Blocks :

http://www.codeblocks.org/
http://www.codeblocks.org/downloads/26

Les 3 premiers liens de téléchargement pour Windows sont sans MinGW (donc sans compilateur gcc). Utilise les seulement si tu veux utiliser une installation existante de MinGW et si tu sais exactement ce que tu fais.

Sinon, le plus simple, est de désinstaller tes installations de Dev C++ et de MinGW avant d'installer Code::Blocks, et de choisir la version "codeblocks-16.01mingw-setup.exe", qui installe avec la version 16.01 de Code::Blocks un MinGW comportant des versions 4.9.2, 32 bit, SJLJ de gcc, c++ et gdb.


Dal
0
J'utilise bel et bien la version d'Orwell Dev! J'avais assumé que comme elle est la dernière version du projet que ce serait interprété comme tel.

Enfin, vous avez probablement raison quand au fait que ça n'ait pas complètement résolu mon problème mais sur le coup ça avait semblé fonctionné (j'avais la croyance que ça fonctionnerait et les apparences mon donné l'impression que c'était bien le cas). Sauf que maintenant je travaille sur mon deuxième projet à remettre et dû coup je me trouve à encore avoir de la difficulté avec la compilation. Argh.

Et je vais avouer avoir l'impressions d'avoir été lancé dans l'aventure d'écrire des programmes sans bien avoir reçu l'information à propos de comment ce que j'écris entre en contact avec le fonctionnement de l'ordinateur. À un tel point où je ne sais même vraiment comment parler de mon manque de connaissance / à quel point celui impacte ma capacité à écrire un bon code.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
6 nov. 2017 à 10:42
Bonjour,

Télécharge Process Explorer et vois si ton programme n'est pas en cours d'exécution : https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

S'il est en cours d'exécution, c'est que tu ne l'as pas fermé, ou que tu as tenté de le fermer, mais qu'il a planté, ou que le launcher de Dev C++ ne l'a pas fermé correctement ou n'a pas pu le faire. Termine ton programme avec Process Explorer, et tu devrais pouvoir recompiler.

S'il n'est pas en cours d'exécution d'après Process Explorer, c'est qu'autre chose bloque l'écrasement de l'exécutable déjà généré. Et là.. ben il faut trouver quoi :-)

Des pistes :

- vois si ce n'est pas en fait ton antivirus qui bloquerait la modification de l'exécutable
- vérifie aussi si ton utilisateur a des droits d'administration
- certains utilisateurs confrontés à ce type de problème on pu débloquer leur problème en activant le service Windows "Application Experience" (même si je ne vois pas trop pourquoi). On explique comment faire .


Dal
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
15 oct. 2017 à 09:29
Bonjour
je ne code pas en C ni avec Dev C++, mais cela ressemble à un truc que je rencontre de temps en temps avec Visual Studio.

Lors de la dernière exécution, l'arrêt se passe mal (ou ne pas du tout: boucle infinie, etc...), le fichier n'est pas libéré.
Windows t'interdit donc d'écrire un fichier qui est en cours d'utilisation.

Lance le gestionnaire des taches, cherche ton exe dans les processus et s'il y est tue le.
Réessaye ensuite de compiler.

Si ça ne marche pas, reboote l'ordinateur.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 16 oct. 2017 à 10:36
oui, cela peut arriver dans les cas que tu cites, ou encore plus simplement, le programme ne plante pas ou peut se terminer normalement, mais on a mis un
getchar();
ou
system("pause");
à la fin du code, et on oublie de le terminer en pressant la touche Entrée :-)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
16 oct. 2017 à 11:39
Ha oui aussi
0
Merci!
0