Problème compilation
Résolu
UbuntuPR
Messages postés
89
Date d'inscription
Statut
Membre
Dernière intervention
-
UbuntuPR Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
UbuntuPR Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit problème au niveau de ma compilation :
Je m'explique :
j'ai plusieurs fichiers :
Image.cpp Image.h Pixel.cpp Pixel.h et app.cpp qui contient la fonction main, et j'ai également un makefile qui contient le code suivant :
Et voici le contenu des mes fichiers
Image.h :
Image.cpp :
Pixel.h :
Pixel.cpp :
et app.cpp :
Donc lorsque que je compile, le compilateur me renvoie :
Si j'ai bien compris, ce serait une erreur lors de l'édition des liens, mais je ne parviens pas à trouver cette erreur.
En espérant que quelq'un puisse m'aider !
Merci d'avance !
J'ai un petit problème au niveau de ma compilation :
Je m'explique :
j'ai plusieurs fichiers :
Image.cpp Image.h Pixel.cpp Pixel.h et app.cpp qui contient la fonction main, et j'ai également un makefile qui contient le code suivant :
App : Image.o Pixel.o app.o g++ Image.o Pixel.o app.o -o App Image.o : Image.h Pixel.h Image.cpp g++ -c Image.cpp Pixel.o : Pixel.h Pixel.cpp g++ -c Pixel.cpp app.o : app.cpp g++ -c app.cpp
Et voici le contenu des mes fichiers
Image.h :
#ifndef IMAGE_H #define IMAGE_H #include "Pixel.h" using namespace std; class Image { public : // Attributes char _name; int _width; int _height; Pixel _pixels; // Operations void init(int,int); void print(void); }; #endif
Image.cpp :
#include "Image.h" #include "Pixel.h" void Image::init(int a,int b) { (*this)._width = a; (*this)._height = b; return; } void Image::print(void) { //rien }
Pixel.h :
#ifndef PIXEL_H #define PIXEL_H class Pixel { public : // Attributes int _red; int _green; int _blue; }; #endif
Pixel.cpp :
#include "Pixel.h"
et app.cpp :
#include "Image.cpp" #include "Pixel.cpp" #include <iostream> int main(int argc, char ** argv[]) { std::cout << "salut" << std::endl; return 0; //Image img; }
Donc lorsque que je compile, le compilateur me renvoie :
app.o: In function 'Image::print()': app.cpp:(.text+0x0): multiple definition of 'Image::print()' Image.o:Image.cpp:(.text+0x0): first defined here
Si j'ai bien compris, ce serait une erreur lors de l'édition des liens, mais je ne parviens pas à trouver cette erreur.
En espérant que quelq'un puisse m'aider !
Merci d'avance !
A voir également:
- Problème compilation
- Breach compilation c'est quoi - Guide
- Compilation error: expected unqualified-id before '{' token ✓ - Forum C++
- Erreur de compilation projet ou bibliothèque introuvable - Forum Excel
- Must declare a named package because this compilation unit is associated to the named module - Forum Java
- Problème Compilation Dev-C++ - Forum C++
2 réponses
Pourquoi tu fais des #include avec des fichiers .cpp ? Ce sont tes .h qu'il faut inclure...
Ensuite, tu fais (*this)._width = a; l'utilisation de this n'est pas indispensable, tu peux directement faire width = a;
PS. Dans ton main tu mets char ** argv[], c'est un peu trop, il faut mettre char*argv[] ou éventuellement char**argv, mais pas les deux...La confiance n'exclut pas le contrôle
Ensuite, tu fais (*this)._width = a; l'utilisation de this n'est pas indispensable, tu peux directement faire width = a;
PS. Dans ton main tu mets char ** argv[], c'est un peu trop, il faut mettre char*argv[] ou éventuellement char**argv, mais pas les deux...La confiance n'exclut pas le contrôle