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 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    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"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  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 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    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
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  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 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    A tout hasard, tu n'as pas de changement de namespace?

    Quel est le message de compilation exact et complet?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  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 620
    Points
    15 620
    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 : 47
    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).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

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