Problème compilation
Résolu
UbuntuPR
Messages postés
100
Statut
Membre
-
UbuntuPR Messages postés 100 Statut Membre -
UbuntuPR Messages postés 100 Statut Membre -
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
- Comment faire une compilation de musique - Forum Audio
- Problème Compilation Dev-C++ - Forum C++
- Must declare a named package because this compilation unit is associated to the named module - Forum Java
- Erreur de compilation projet ou bibliothèque introuvable - Forum VB / VBA
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