IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

g++ - "multiple definition"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut g++ - "multiple definition"
    Hello,

    J'ai récupéré une bibliothèque, et je n'arrive pas à la compiler avec g++, alors que ça marche très bien avec Visual Studio 2005.

    Cela se passe dans un .h. Ce fichier possède un espace de nommage. Dans cet espace de nommage sont définis une fonction et une classe.

    La fonction n'est.utilisée que par une fonction publique de cette classe.

    Avec Visual Studio 2005, aucun problème.

    Mais g++ me sort un "multiple definition" sur la fonction

    PS : pour info, il s'agit de la bibliothèque PixelToaster
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    namespace PixelToaster
    {
    	Format findFormat(int bitsPerPixel, unsigned long redMask, unsigned long greenMask, unsigned long blueMask)
    	{
    		(...)
    		return Format::Unknown;
    	}
    
    	class UnixDisplay : public DisplayAdapter
    	{
    	public:
    		bool open( const char title[], int width, int height, Output output, Mode mode )
    		{
    			(...)
    			destFormat_ = findFormat(bufferDepth, visual->red_mask, visual->green_mask, visual->blue_mask);
    			(...)
    		}
    	}
    }

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    ton .h contient 2 déclarations de fonction qui sont aussi des définitions
    dans un namespace nommé PixelToaster. C'est 2 fonctions sont ::findFormat() et UnixDisplay::open().

    Si tu fichier .h est inclus plus qu'une fois dans ton projet, ces 2 fonctions sont définies plus qu'une fois.

    Est ce que ce fichier .h est protégé des doubles inclusions par quelque chose du genre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifdef __INCLUDE_MON_FICHIER__
    #define __INCLUDE_MON_FICHIER__
    ...
    mes déclarations/définitions
    ...
    #endif //#ifdef __INCLUDE_MON_FICHIER__
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. multiple definition of operator<<...
    Par kleenex dans le forum C++
    Réponses: 3
    Dernier message: 05/05/2006, 02h56
  2. [LG]Interfaces et multiples définitions
    Par fatt dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2004, 22h41
  3. multiple definition
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 10/09/2003, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo