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 :

MinGW, pthread.h et déclaration de classes


Sujet :

C++

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut MinGW, pthread.h et déclaration de classes
    Salut à tous,

    J'ai un problème du genre un peu casse-couille.
    Déjà, je précise que mon code marche sans problème sous linux / mac os, mais je dois le porter sous windows, j'ai donc choisi d'utiliser MinGW.

    Voilà le code problématique :
    (pour résumer : )
    Fichier MaClasse.hpp (c'est pas les vrais noms)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Arc;
     
    class pouet {
    Arc maFun();
    };
    En pratique, pouet (pas le vrai nom non plus ^_^) utilise des pthread_t donc j'inclus pthreads.h.
    Or, quand je l'inclus, et uniquement quand je l'inclus (les autres includes ne posent pas de problème particulier) j'ai l'erreur :
    'Arc' does not name a type.

    Voilà, je m'arrache les cheveux là-dessus, j'espère vraiment que c'est pas une erreur débile.

    bonne soirée

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Mais, avant d'arriver à l'erreur
    Arc doesn't name a type
    , n'aurais tu pas, à tout hasard, d'autres erreurs

    Je pense esentiellement à une ereur du genre
    fatal : cannot find pthread.h
    Bien souvent, le fait qu'un erreur se produise au moment du parsing occasionne une série d'autres erreurs qui n'ont, en réalité, aucun sens.

    Si le fait de rajouter une inclusion de fichier d'en-tête correcte fait que le compilateur te sort une série d'erreurs incongrues, c'est très souvent parce qu'il n'a simplement pas trouvé le fichier d'en-tête en question

    Pour résoudre ce problème, il faut
    1. s'assurer de la présence du fichier d'en-tête sur ton pc (et, tant qu'à faire, s'assurer que toute la bibliothèque pthreads est installée )
    2. s'assurer que le fichier d'en-tête se trouve dans un dossier qui sera visité par le compilateur lorsqu'il recherchera les en-tête
      • soit en le plaçant dans un des dossiers dans lesquels il cherche dejà
      • soit en utilisant l'option -Ichemin/vers_le_dossier_ad_hoc (nota: il s'agit d'un i majuscule )
    Note que cela ne résoudra sans doute qu'une partie du problème, car il s'agira sans doute aussi d'indiquer à l'éditeur de liens qu'il doit également utiliser ce qui se trouve dans libpthread.a, ainsi que le chemin d'accès vers le dossier où se trouve cette bibliothèque, si, encore une fois, ce n'est pas un dossier "classique"

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Hélas non, ce sont les seules erreurs produites par ce code, d'un part, et d'autre part, dans d'autres portions du programme compilées séparément, la librairie pthreads que j'utilise (http://sourceware.org/pthreads-win32/) marche très bien.

    Donc oui, il est dans mon include et mon libpath (en fait j'ai copié les headers de pthread dans le include de mingw et de même pour le .lib)

    Merci

  4. #4
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Points : 103
    Points
    103
    Par défaut
    À tout hasard, as-tu essayé de changer le nom 'Arc' (enfin le vrai nom) qui serait peut-être déjà utilisé pour autre chose dans pthreads.h.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Citation Envoyé par MicBeastKiller Voir le message
    À tout hasard, as-tu essayé de changer le nom 'Arc' (enfin le vrai nom) qui serait peut-être déjà utilisé pour autre chose dans pthreads.h.
    Si c'était le cas, cela ne changerait rien, étant donné qu'il ne s'agit "que" d'une déclaration anticipée

    Enfin, il faudrait que je vérifie, mais je crois que nous aurions un autre message d'erreur si l'on essayait de faire une déclaration anticipée d'une classe en utilisant le nom d'une énumération ou d'une union

  6. #6
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 140
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Si c'était le cas, cela ne changerait rien, étant donné qu'il ne s'agit "que" d'une déclaration anticipée

    Enfin, il faudrait que je vérifie, mais je crois que nous aurions un autre message d'erreur si l'on essayait de faire une déclaration anticipée d'une classe en utilisant le nom d'une énumération ou d'une union
    C'était au cas où car je n'ai pas de compilateur sous la main (ou plutôt sur ma machine actuelle ) pour tester cela.
    J'avais par ailleurs eu (un jour fort fort lointain ) un problème avec une classe nommée identiquement à quelque chose dans un header.
    C'était au cas où.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    En l'occurence, un cat pthread.h|grep Arc ne renvoie rien et je pense aussi qu'il m'aurait dit "identificateur déjà déclaré" si c'était ce problème, non ?

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    A tout hasard, tu n'as pas de changement de namespace?

    Quel est le message de compilation exact et complet?

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Non, aucune déclaration / utilisation de namespace nulle part.
    Les seules erreurs que j'ai, sont, très précisément :

    'Arc' does not name a type. (*4, dont un qui est l'exact exemple que j'ai mis dans mon OP).

    J'utilise Qt creator, s'il y en a que ça intéresse...

  10. #10
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 617
    Points
    15 617
    Par défaut
    A priori, faudrait un code compilable qui nous permettrait de tester. Là, je vois pas non plus la cause sur un code aussi minimaliste

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par boozook Voir le message
    Salut,
    Non, aucune déclaration / utilisation de namespace nulle part.
    Les seules erreurs que j'ai, sont, très précisément :

    'Arc' does not name a type. (*4, dont un qui est l'exact exemple que j'ai mis dans mon OP).

    J'utilise Qt creator, s'il y en a que ça intéresse...
    Et le numéro de ligne que te donne le compilateur, ça correspond à quelle ligne ? (toujours avec tes noms étranges, si tu souhaite garder ton code secret).

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2007, 10h23
  2. [amfPhp] Déclaration de classe dans un package
    Par luta dans le forum Dynamique
    Réponses: 6
    Dernier message: 27/09/2006, 16h37
  3. Déclaration de classe
    Par EntraX666 dans le forum Langage
    Réponses: 5
    Dernier message: 29/10/2005, 10h49
  4. Déclaration de classes et méthodes externes
    Par rulianf dans le forum C++
    Réponses: 6
    Dernier message: 15/09/2005, 15h26
  5. Réponses: 5
    Dernier message: 10/11/2004, 19h44

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