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++Builder Discussion :

problem linker avec cbuilder6


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut problem linker avec cbuilder6
    salut
    j’ai des problem dans mon projet
    1-j’ai utiliser dans c++ builder les Bibliothèques pthread.h et semaphore.h dans ma source mais lors de compilation affisher des linker error exemple
    [Linker Error] Unresolved external '_sem_init' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PRO\CSEMAPHORE.OBJ.
    2-comment linker les .lib et les .dll dans c++ builder
    s’il vout plait aidez moi
    merci d’avance

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    salut
    va lire cette page web sans doute ça va t'aider a comprendre: http://cpp.developpez.com/faq/bcb/?page=erreurs
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    merci mais le problème n'est pas résolu.

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Est-ce que tu as ajouté tes fichiers .lib à ton projet?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salut
    merci de ta reponce
    j'ai essay d'ajouter pthreadgc2.lib comme ça
    project->add to project mais reste le meme problem
    svp si tu ai une autre methode Dites-moi dans les plus brefs délais
    merci d'avance

  6. #6
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Est-ce que tes fichiers .lib on été généré pour C++Builder?

    Si ce n'est pas le cas, alors il faut utiliser la ligne de commande suivante avec chacune des DLLs que tu utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    implib bcblib.lib mylib.dll
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    merci
    J'ai fait tout ce que vous m'avez dit, mais reste le mem problem
    une autre solution si vous avais
    pardont pour le désagrément
    merci d'avance

  8. #8
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Est-ce que tu peux me dire la provenance des fichiers pthread.h et semaphore.h au cas ou sa me tenterait de regarder plus en profondeur.

    Tu peux aussi mettre sur le forum le bout de code où tu utilises _sem_init.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salue
    j'utilise sem_init,sem_wait,sem_postqui se trouve dans semaphore.h dans
    une classe csemaphore.cpp comme ça

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    ////////////////////////////////////////////////////////////////////////////
    /*------------------------------------------------------------------------*/
    /*                                                                        */
    /*   NOM       :  Init                                                    */
    /*   NBR ARGS  :  1                                                                                   */
    /*   ARGUMENTS :                                                          */
    /*                          1)- Val_Init : La valeur initiale d'un semaphore(Entier)*/
    /*   RETOUR    :  Elle indique comment s'est passé l'operation            */
    /*   RESUME    :  La fonction Init initialise un semapore à une valeur    */
    /*                donnée                                                  */
    /*                                                                        */
    /*------------------------------------------------------------------------*/
    void CSemaphore::Init( unsigned int Val_Init)
    {
    sem_init ( & Semaphore , 0, Val_Init);
       // return( sem_init ( & Semaphore , 0, Val_Init) );
    }
     
    ///////////////////////////////////////////////////////////////////////////
    /*------------------------------------------------------------------------*/
    /*                                                                        */
    /*   NOM       :  ~CSemaphore                                             */
    /*   NBR ARGS  :  0                                                                                   */
    /*   ARGUMENTS :                                                          */
    /*                                Pas  d'argument                                         */
    /*   RETOUR    :  Pas de valeur de retour                                 */
    /*   RESUME    :  cette fonction detruit le semaphore( destructeur )      */
    /*                                                                        */
    /*------------------------------------------------------------------------*/
    /*CSemaphore::~CSemaphore()
    {
          sem_destroy( &Semaphore ) ;
    } */
     
    ////////////////////////////////////////////////////////////////////////////
    /*------------------------------------------------------------------------*/
    /*                                                                        */
    /*   NOM       :  P_Semaphore                                             */
    /*   NBR ARGS  :  0                                                                                   */
    /*   ARGUMENTS :                                                          */
    /*                                Pas  d'argument                                         */
    /*   RETOUR    :  Pas de valeur de retour                                 */
    /*   RESUME    :  Equivalente à P( S ) ( voir cours systeme )             */
    /*                                                                        */
    /*------------------------------------------------------------------------*/
     
    void CSemaphore::P()
    {
     
    sem_wait( & Semaphore ) ;
      //    int Ret =  sem_wait( &Semaphore ) ;
      //    return Ret ;
     
    }
     
    ////////////////////////////////////////////////////////////////////////////
    /*------------------------------------------------------------------------*/
    /*                                                                        */
    /*   NOM       :  V_Semaphore                                             */
    /*   NBR ARGS  :  0                                                                                   */
    /*   ARGUMENTS :                                                          */
    /*                                Pas  d'argument                                         */
    /*   RETOUR    :  Pas de valeur de retour                                 */
    /*   RESUME    :  Equivalente à V( S ) ( voir cours systeme )             */
    /*                                                                        */
    /*------------------------------------------------------------------------*/
    void CSemaphore::V()
    {
    sem_post( &Semaphore );
      // return (sem_post( &Semaphore ) );
    }


    et j'utilise pthread_create, pthread_exit qui se trouve dans pthread.h dans une classe capp.cpp pour la creation de Thread Reception Reponses Fourni par Client et thread Envoie Requetes Application comme ça
    // création de thread -1- Reception reponse fourni par Le Client Concerné
    pthread_create( thread_reception_reponse_client , NULL, reception_reponse_client , (void*)ptr_app);
    // création de thread -1- Envoie Requetes Application
    pthread_create( thread_envoie_requete_app, NULL, envoie_requete_app, (void*)ptr_app);
    et à la fin j'utilise
    pthread_exit(NULL);

    si tu peux j'ai envoyer les source compler
    mais je ponse que le problem si dans l'instalation de pthread
    merci d'avance

  10. #10
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Le problème c'est que je n'ai pas les fichiers pthread.h, semaphore.h et la DLL.

    PS: Il existe une balise BBCode nommé CODE pour l'insertion de code source dans un message. (problème corrigé par pottiez dans le message précédent)
    PSS: Si je t'aide c'est moi qui choisi le délai.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salut
    pardont je m'exscuse si me deranger vous .
    les codes :
    semaphore.h
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    /*
     * Module: semaphore.h
     *
     * Purpose:
     *	Semaphores aren't actually part of the PThreads standard.
     *	They are defined by the POSIX Standard:
     *
     *		POSIX 1003.1b-1993	(POSIX.1b)
     *
     * --------------------------------------------------------------------------
     *
     *      Pthreads-win32 - POSIX Threads Library for Win32
     *      Copyright(C) 1998 John E. Bossom
     *      Copyright(C) 1999,2005 Pthreads-win32 contributors
     * 
     *      Contact Email: rpj@callisto.canberra.edu.au
     * 
     *      The current list of contributors is contained
     *      in the file CONTRIBUTORS included with the source
     *      code distribution. The list can also be seen at the
     *      following World Wide Web location:
     *      http://sources.redhat.com/pthreads-win32/contributors.html
     * 
     *      This library is free software; you can redistribute it and/or
     *      modify it under the terms of the GNU Lesser General Public
     *      License as published by the Free Software Foundation; either
     *      version 2 of the License, or (at your option) any later version.
     * 
     *      This library is distributed in the hope that it will be useful,
     *      but WITHOUT ANY WARRANTY; without even the implied warranty of
     *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     *      Lesser General Public License for more details.
     * 
     *      You should have received a copy of the GNU Lesser General Public
     *      License along with this library in the file COPYING.LIB;
     *      if not, write to the Free Software Foundation, Inc.,
     *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
     */
    #if !defined( SEMAPHORE_H )
    #define SEMAPHORE_H
     
    #undef PTW32_LEVEL
     
    #if defined(_POSIX_SOURCE)
    #define PTW32_LEVEL 0
    /* Early POSIX */
    #endif
     
    #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
    #undef PTW32_LEVEL
    #define PTW32_LEVEL 1
    /* Include 1b, 1c and 1d */
    #endif
     
    #if defined(INCLUDE_NP)
    #undef PTW32_LEVEL
    #define PTW32_LEVEL 2
    /* Include Non-Portable extensions */
    #endif
     
    #define PTW32_LEVEL_MAX 3
     
    #if !defined(PTW32_LEVEL)
    #define PTW32_LEVEL PTW32_LEVEL_MAX
    /* Include everything */
    #endif
     
    #if __GNUC__ && ! defined (__declspec)
    # error Please upgrade your GNU compiler to one that supports __declspec.
    #endif
     
    /*
     * When building the DLL code, you should define PTW32_BUILD so that
     * the variables/functions are exported correctly. When using the DLL,
     * do NOT define PTW32_BUILD, and then the variables/functions will
     * be imported correctly.
     */
    #ifndef PTW32_STATIC_LIB
    #  ifdef PTW32_BUILD
    #    define PTW32_DLLPORT __declspec (dllexport)
    #  else
    #    define PTW32_DLLPORT __declspec (dllimport)
    #  endif
    #else
    #  define PTW32_DLLPORT
    #endif
     
    /*
     * This is a duplicate of what is in the autoconf config.h,
     * which is only used when building the pthread-win32 libraries.
     */
     
    #ifndef PTW32_CONFIG_H
    #  if defined(WINCE)
    #    define NEED_ERRNO
    #    define NEED_SEM
    #  endif
    #  if defined(_UWIN) || defined(__MINGW32__)
    #    define HAVE_MODE_T
    #  endif
    #endif
     
    /*
     *
     */
     
    #if PTW32_LEVEL >= PTW32_LEVEL_MAX
    #ifdef NEED_ERRNO
    #include "need_errno.h"
    #else
    #include <errno.h>
    #endif
    #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
     
    #define _POSIX_SEMAPHORES
     
    #ifdef __cplusplus
    extern "C"
    {
    #endif				/* __cplusplus */
     
    #ifndef HAVE_MODE_T
    typedef unsigned int mode_t;
    #endif
     
     
    typedef struct sem_t_ * sem_t;
     
    PTW32_DLLPORT int __cdecl sem_init (sem_t * sem,
    			    int pshared,
    			    unsigned int value);
     
    PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem);
     
    PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem);
     
    PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem);
     
    PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem,
    				 const struct timespec * abstime);
     
    PTW32_DLLPORT int __cdecl sem_post (sem_t * sem);
     
    PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem,
    				     int count);
     
    PTW32_DLLPORT int __cdecl sem_open (const char * name,
    			    int oflag,
    			    mode_t mode,
    			    unsigned int value);
     
    PTW32_DLLPORT int __cdecl sem_close (sem_t * sem);
     
    PTW32_DLLPORT int __cdecl sem_unlink (const char * name);
     
    PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem,
    				int * sval);
     
    #ifdef __cplusplus
    }				/* End of extern "C" */
    #endif				/* __cplusplus */
     
    #undef PTW32_LEVEL
    #undef PTW32_LEVEL_MAX
     
    #endif				/* !SEMAPHORE_H */
    comment ajouter les .dll et .a
    merci bouceaup

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    comment ajouter les .dll et .a
    .a ? C++ builder il n'en voudra pas !
    C'est des .lib qu'il veut !

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    et voici pthread.h et sched.h dans une piéce jointe parce que sa taille est grand
    merci
    Fichiers attachés Fichiers attachés

  14. #14
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tout ce que j'avais besoin c'est un lien vers le fichier compressé, self-extracted, à cette adresse: ftp://sourceware.org/pub/pthreads-wi...-0-release.exe

    C'est les données du dossier Pre-built.2 qui serons utiles. Il faut ajouter les 3 .h du dossier include dans projet.

    Par contre, présentement j'obtient le même message que toi et je ne suis pas capable de résoudre le problème.

    J'ai seulement essayer d'utiliser la DLL avec le fichier .lib, il existe d'autre façon, tu peux peut-être en essayer d'autre, va voir cette page Web: http://lfe.developpez.com/DLL/
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  15. #15
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, juste une question comme ça, pourquoi tu n'utilises pas TThread? Voici un lien au cas où sa pourrait t'intéresser: http://chgi.developpez.com/thread/
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  16. #16
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salut
    merci bouceaup
    bay

  17. #17
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salut
    mais il y a equivalent de pthread_create et les autre fonction si oui lequelle
    merci

  18. #18
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par nadiamo Voir le message
    salut
    mais il y a equivalent de pthread_create et les autre fonction si oui lequelle
    merci
    Pour créer un nouveau thread tu fais un new:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonThread = new TMonThread(false);
    TMonThread est un thread créer avec C++Builder en faisant "Nouveau" puis sur l'onglet "Nouveau" : "Objet Thread" ensuite tu entres comme nom de classe TMonThread.

    Pour voir l'exemple complet retourne sur la page http://chgi.developpez.com/thread/
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  19. #19
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salue
    es aue tu peut dire comment ajouter à l'editeur de lien la bibliothèque :
    -lpthread
    et spécifier au compilateur la constante :
    -D_REENTRANT
    dans cbuilder6

    merci d'avance

  20. #20
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    salue j'ai utiliser les thread de l'API win32 mais quel est equivalent de pthread_self .
    merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. probleme Linker avec glut sous dev-c++
    Par olator dans le forum Dev-C++
    Réponses: 2
    Dernier message: 03/11/2006, 19h42
  2. [Kylix] probleme (LINKER ERROR)
    Par subzero82 dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2004, 19h28
  3. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32
  4. probleme GRAVE avec directx 9
    Par l'arbre en plastique dans le forum DirectX
    Réponses: 3
    Dernier message: 02/09/2003, 23h59

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