[DEV-C++] fonction : undefined reference to
Fermé
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
4 avril 2007 à 18:06
mamiemando Messages postés 33475 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 janvier 2025 - 6 avril 2007 à 21:49
mamiemando Messages postés 33475 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 janvier 2025 - 6 avril 2007 à 21:49
A voir également:
- Dev c++ undefined reference to
- Telecharger dev c++ - Télécharger - Langages
- Reference pto - Accueil - Box & Connexion Internet
- Massgrave dev - Accueil - Windows
- Dev home. - Télécharger - Développement
- Qwerty to azerty - Guide
6 réponses
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
5 avril 2007 à 21:25
5 avril 2007 à 21:25
Bon alors déjà pour ce qui est de la compilation ça doit ressembler à ça :
Ci dessous les sources que j'ai compilé (j'ai fait deux trois corrections mais ce ne sont pas elles qui font que tu as un pb de linkage, c'est vraiment ton complateur qui est mal configuré) :
Bon sinon le programme segfault quand tu saisis la deuxième ligne de la matrice je te laisse chercher pourquoi...
Bonne chance
(mando@polgara) (~) $ make g++ -W -Wall -c matrice.c g++ -W -Wall -o plop.exe plop.c matrice.o
Ci dessous les sources que j'ai compilé (j'ai fait deux trois corrections mais ce ne sont pas elles qui font que tu as un pb de linkage, c'est vraiment ton complateur qui est mal configuré) :
(mando@polgara) (~) $ cat plop.c /* programme mettant à zéro la diagonale du milieu de la matrice */ #include <stdio.h> #include "matrice.h" int main(){ int **mat; int ilig, icol, taille; printf("Entrez la taille de la matrice : "); scanf("%d", &taille); decmatrice(mat, taille, taille); initmatrice(mat, taille, taille); for (ilig=0;ilig<taille;ilig++) for (icol=0;icol<taille;icol++) if (ilig==icol) mat[ilig][icol] = 0; affichmatrice(mat, taille, taille); freematrice(mat, taille); return 0; } (mando@polgara) (~) $ cat matrice.h #ifndef MATRICE_H #define MATRICE_H void decmatrice(int **mat,unsigned int tlig,unsigned int tcol); void initmatrice(int **mat,unsigned int tlig,unsigned int tcol); void affichmatrice(int **mat,unsigned int tlig,unsigned int tcol); void freematrice(int **mat,unsigned int tlig); #endif (mando@polgara) (~) $ cat matrice.c #include <stdio.h> #include <stdlib.h> /* Déclaration de la matrice */ void decmatrice(int **mat,unsigned int tlig,unsigned int tcol){ unsigned int ilig; mat = (int**)calloc(tlig,sizeof(int*)); for (ilig=0;ilig<tlig;ilig++) mat[ilig] = (int*)calloc(tcol, sizeof(int)); } /* Initialisation de la matrice */ void initmatrice(int **mat,unsigned int tlig,unsigned int tcol){ unsigned int ilig, icol; for (ilig=0;ilig<tlig;ilig++){ for (icol=0;icol<tcol;icol++){ printf("Entrez la valeur de la %dème ligne et de la %dème colonne :\n", ilig+1, icol+1); scanf("%d", &mat[ilig][icol]); } } } /* Affichage de la matrice */ void affichmatrice(int **mat,unsigned int tlig,unsigned int tcol){ unsigned int ilig, icol; for (ilig=0;ilig<tlig;ilig++){ for (icol=0;icol<tcol;icol++) printf("%d",mat[ilig][icol]); printf("\n"); } } /* Libération de la mémoire */ void freematrice(int **mat,unsigned int tlig){ unsigned int ilig; for(ilig=0;ilig<tlig;ilig++) free(mat[ilig]); free(mat); }
Bon sinon le programme segfault quand tu saisis la deuxième ligne de la matrice je te laisse chercher pourquoi...
(mando@polgara) (~) $ ./plop.exe Entrez la taille de la matrice : 5 Entrez la valeur de la 1ème ligne et de la 1ème colonne : 1 Entrez la valeur de la 1ème ligne et de la 2ème colonne : 2 Entrez la valeur de la 1ème ligne et de la 3ème colonne : 3 Entrez la valeur de la 1ème ligne et de la 4ème colonne : 4 Entrez la valeur de la 1ème ligne et de la 5ème colonne : 5 Entrez la valeur de la 2ème ligne et de la 1ème colonne : 6 Erreur de segmentation
Bonne chance
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
6 avril 2007 à 21:49
6 avril 2007 à 21:49
Ah ben faut lire la doc, mais vu que devcpp utilise gcc ou g++ ça doit pas être très différent de ce que j'ai fait sous linux ;)
Bonne chance
g++ -W -Wall -c matrice.c g++ -W -Wall -o plop.exe plop.c matrice.o
Bonne chance
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
4 avril 2007 à 20:51
4 avril 2007 à 20:51
Ben en fait il manque le fameux matrice.c qui donne le contenu des fonctions :
Au niveau du compilateur lui même je ne sais pas trop comment il se règle mais ce qui est sûr c'est qu'il manque au moins le code de ces fonctions pour que ça puisse compiler.
Pour ces 4 fonctions, tu peux préciser que les paramètres tlig et tcol sont des entiers poistifs avec le mot clé unsigned :
Bonne chance
int decmatrice(int **mat, int tlig, int tcol); int initmatrice(int **mat, int tlig, int tcol); int affichmatrice(int **mat, int tlig, int tcol); int freematrice(int **mat, int tlig, int tcol);
Au niveau du compilateur lui même je ne sais pas trop comment il se règle mais ce qui est sûr c'est qu'il manque au moins le code de ces fonctions pour que ça puisse compiler.
Pour ces 4 fonctions, tu peux préciser que les paramètres tlig et tcol sont des entiers poistifs avec le mot clé unsigned :
int decmatrice(int **mat,unsigned int tlig,unsigned int tcol);
Bonne chance
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
5 avril 2007 à 17:04
5 avril 2007 à 17:04
2ème essai...
mais si il y est le fichier matrice.c, je n'ai sauté qu'une ligne après le programme principal, tu n'as pas du le voir, c'est ma faute, dsl.
merci pour "unsigned", je n'y avais pas pensé.
mais si il y est le fichier matrice.c, je n'ai sauté qu'une ligne après le programme principal, tu n'as pas du le voir, c'est ma faute, dsl.
merci pour "unsigned", je n'y avais pas pensé.
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
5 avril 2007 à 21:36
5 avril 2007 à 21:36
Heu... pour compiler, j'appuie juste sur le bouton "compiler". Comment fais-t-on pour taper des lignes de commandes?
je n'ai pas encore regardé tes modifications, je le ferais plus tard.
Pour Segmentation fault... je ne sais pas... c'est mon premier exercice sur les pointeurs donc...
Pourtant je l'avais fais sous Linux en TP, et ça marchait... c'est bizarre.
Merci pour ton aide
je n'ai pas encore regardé tes modifications, je le ferais plus tard.
Pour Segmentation fault... je ne sais pas... c'est mon premier exercice sur les pointeurs donc...
Pourtant je l'avais fais sous Linux en TP, et ça marchait... c'est bizarre.
Merci pour ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
6 avril 2007 à 14:03
6 avril 2007 à 14:03
Ben je suis sous linux ;) Voilà comment je fais ^^ Mais j'imagine que tu as l'équivalent dans ton environnement de développement.
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
6 avril 2007 à 18:11
6 avril 2007 à 18:11
Ah d'accord!
avec Dev-cpp, il suffit d'appuyer sur le bouton compiler, et ça marche. Il y a très certainement des options, mais je ne les connais pas.
avec Dev-cpp, il suffit d'appuyer sur le bouton compiler, et ça marche. Il y a très certainement des options, mais je ne les connais pas.