Undefined reference to (function)
Résolu
Darkellysio
Messages postés
33
Statut
Membre
-
Darkellysio Messages postés 33 Statut Membre -
Darkellysio Messages postés 33 Statut Membre -
Bonjour à tous.
Dans le cadre d'un travail, je dois corriger un programme en C++. J'utilise Code Bloks
Celui ci est constitué :
- d'un main.cpp
- d'un sous programme.cpp
- d'un sous programme.h
J'ai bien mis #include "fonctionsUtilitaires.h" dans les deux .cpp
De même, j'ai mis dans les trois
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
Une fonction est appelée depuis le main.cpp de la manière suivante
histogramme(image,frequences[v]);
Image est un tableau à deux dimensions
Voici le prototype de la fonction dans le .h
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences);
Et voici la fonction dans le .cpp
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences[])
{
//calcule les frequences
for (int ligne = 0; ligne < HAUTEUR; ligne++)
{
for (int colonne = 0; colonne < LARGEUR; ++colonne)
{
p_frequences[p_image[ligne][colonne]]++;
}
}
}
Et voici l'erreur que j'obtiens
C:\...\main.cpp|52|undefined reference to `histogramme(int (*) [13], int)'|
Pourriez vous m'aider s'il vous plait ?
Dans le cadre d'un travail, je dois corriger un programme en C++. J'utilise Code Bloks
Celui ci est constitué :
- d'un main.cpp
- d'un sous programme.cpp
- d'un sous programme.h
J'ai bien mis #include "fonctionsUtilitaires.h" dans les deux .cpp
De même, j'ai mis dans les trois
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
Une fonction est appelée depuis le main.cpp de la manière suivante
histogramme(image,frequences[v]);
Image est un tableau à deux dimensions
Voici le prototype de la fonction dans le .h
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences);
Et voici la fonction dans le .cpp
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences[])
{
//calcule les frequences
for (int ligne = 0; ligne < HAUTEUR; ligne++)
{
for (int colonne = 0; colonne < LARGEUR; ++colonne)
{
p_frequences[p_image[ligne][colonne]]++;
}
}
}
Et voici l'erreur que j'obtiens
C:\...\main.cpp|52|undefined reference to `histogramme(int (*) [13], int)'|
Pourriez vous m'aider s'il vous plait ?
2 réponses
-
Bonjour,
Le prototype de la fonction histogramme n'est pas cohérent...
Dans le.h, tu dis que le deuxième argument est un int et dans le cpp, tu mets un pointeur. Attention aussi à voir pour l'appel.
Note : studio.h et stdlib.h c'est du C...
-
Bonjour
frequence[v] n'est pas un pointeur mais le vième élément du tableau fréquences non ?
C'est quoi les équivalents sous C++ stp ? J'ai étudié le C au premier semestre et ait un peu trop pris l'habitude de mettre stdlib et stdio.-
frequence[v] n'est pas un pointeur
Cela dépend de la déclaration du type de la variable frequence. Ici vu le contexte, oui je pense qu'il s'agit du v+1ème élément du tableau.
Mais ma remarque ne portait pas sur ça.
Voici le prototype de la fonction dans le .h
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences);
Et voici la fonction dans le .cpp
void histogramme(int p_image[LARGEUR][HAUTEUR], int p_frequences[])
Il y a une incohérence entre les deux prototypes. Il faut choisir entre : int p_frequences et int p_frequences[].
Si tu souhaites envoyé un entier : int frequence. Si tu souhaites envoyer un pointeur (on ne peut pas passer de tableau en C) : int p_frequences[].
L'équivalent sous C++ de stdio.h est iostream, et celui de stdlib.h est cstdlib
Cdlt, -
-