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

Discussion :

Erreur lors de la compilation sur Mac OS X 10.8.2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut Erreur lors de la compilation sur Mac OS X 10.8.2
    Bonjour,

    Je tente de développer mon premier programme avec qt Creator 2.5 sous mac os 10.8.2 mais malheureusement, lorsque je compile, j'obtient l'erreur suivante que je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    :-1: erreur : symbol(s) not found for architecture x86_64

    De quoi s'agit-il exactement ?

    J'ai chercher sous google mais ça ne donne rien malgré des changement de réglage et des nettoyage de code.

    Voici mon code :

    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
     
     
    Code généré automatiquement
     
    MainMenu.h
    #ifndef MAINMENU_H
    #define MAINMENU_H
     
    #include <QMainWindow>
     
    namespace Ui {
    class MainMenu;
    }
     
    class MainMenu : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit MainMenu(QWidget *parent = 0);
        ~MainMenu();
     
    };
     
    #endif // MAINMENU_H
    MainMenu.cpp

    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
     
    #include "mainmenu.h"
    #include "ui_mainmenu.h"
    #include <QPushButton>
    #include <QGridLayout>
     
     
    MainMenu::MainMenu(QWidget *parent) :
        QMainWindow(parent)
    {
     
        QPushButton("Clients",this);
        QPushButton("Quitter",this);
        this->show();
    }
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <QApplication>
    #include "mainmenu.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainMenu mainMenu;
     
        return a.exec();
    }
    Pourriez-vous m'aider ?

    Merci d'avance pour votre aide.

    Salutations

  2. #2
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut La méthode init() dans le constructeur et le c++
    Bonjour,

    Il semblerait que ce soit l'appel à la méthode init qui est privée qui pose problème, Quand j'ai pris des cours sur le langage java, on m'a appris à mettre un appelle à une méthode dont la signature était : private void init() dans mes constructeurs.
    En c++ avec qt, une telle manière de faire peut-elle s'appliquer ?

    Pour tenter de le savoir, j'ai essayé en mettant le code suivant dans le fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private :
    void init ();
    et le fichier .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void init() {
    // initialisations
    }

    Voilà le message d'erreur de make après l'exécution de qmake en ligne de commande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Undefined symbols for architecture x86_64:
      "MenuPtincipal::init()", referenced from:
          MenuPtincipal::MenuPtincipal() in menuptincipal.o
    ld: symbol(s) not found for architecture x86_64
    clang: e
    Comme vous pouvez le voir, le compilateur semble ne pas comprendre cette manière de faire. Cela me semble étrange. C'est pourquoi je vous demande si elle est vraiment impossible ?

    J'ai essayer de changer le nom de la méthode mais rien à faire.

    Ce problème est-il vraiment lié à la compilation en 64 bit sur mac os 10.8.2 ?

    Si vous y avez déjà été confronté ? si oui, comment avez-vous fait pour le résoudre ?

    Merci d'avance pour votre réponse.

    Salutations

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    J'aurais tendance à dire que ce genre de méthode init() est une incarnation du Diable dans ses jours les plus diaboliques, sauf dans les langages où la notion de constructeur n'existe pas (ce qui n'est pas le cas de Java ou de C++) – sauf rare exception, évidemment, mais je ne vois pas de cas où c'est intéressant à première vue.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Undefined symbols for architecture ...
    peut aussi signifier tout simplement qu'une partie de votre code ou des librairies utilisées n'ont pas été compilés pour l'architecture citée dans le message d'erreur,
    (par défaut il compile uniquement pour l'architecture de la machine sur laquelle vous travaillez) et qu'il faut donc vérifier vos paramètres de compilation (les flags -arch passés au compilateur) soit dans le "make file", soit le script de compilation, soit dans l'IDE selon votre méthode de travail.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut prob compilation
    Essayes de forcer la la compilation en 32bits pour voir ce que ça donne
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. [Disque Dur] [MAC] Erreur lors d'un transfert sur disque externe
    Par ogenki dans le forum Composants
    Réponses: 3
    Dernier message: 21/09/2010, 09h36
  2. Réponses: 8
    Dernier message: 06/12/2009, 23h00
  3. Erreur lors de la compilation avec OmniORB
    Par JohnKwada dans le forum CORBA
    Réponses: 1
    Dernier message: 07/09/2006, 17h34
  4. erreur lors de la compilation
    Par ksoft dans le forum MFC
    Réponses: 2
    Dernier message: 02/05/2006, 15h40
  5. Réponses: 4
    Dernier message: 22/02/2006, 14h11

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