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

Arduino Discussion :

Référence indéfinie vers vtable for ArduiPi_OLED


Sujet :

Arduino

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Référence indéfinie vers vtable for ArduiPi_OLED
    Bonjour à tous et bonne annéée!

    Je suis un peu novice et j'ai un problème en voulant utilisée une librairie "en parallèle"

    Je m'explique. J'ai un Raspberry sur lequel j'ai installé lalibrarire RadioHead.
    https://github.com/hallard/RadioHead
    (C'est du LoRa. Cette librarire permet de lire des paquets envoyé par Radio 868Mhz)
    En soit cette librarire fontionne bien.
    J'ai compilé et j'exécute le fichier qui ce trouve dans
    https://github.com/hallard/RadioHead...les/raspi/rf95
    (après compilation)
    Il m'affiche donc les paquets reçus.

    J'ai aussi un écran LCE OLED 128x64 sur lequel je souhaite afficher les messages reçus.
    Pour cela j'ai encore installé la librairire
    https://github.com/hallard/ArduiPi_OLED
    et j'arrive avec succès affciher un demo avec le fichier
    https://github.com/hallard/ArduiPi_O...aster/examples
    Le problème plus concrètement.
    Apèrs avoir exécuté la commande
    je souhaite donc que les messages reçus soit aussi affcihés sur mon écran LCD. (Je dis aussi, car je les lis bien dans mon terminal)


    Il faut aussi savoir que dans /usr/local/include/, j'ai bien ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ls -ls /usr/local/include/
    total 80
     4 -rw-r--r-- 1 root staff  3931 jan  6 22:54 Adafruit_GFX.h
     8 -rw-r--r-- 1 root staff  7272 jan  6 22:54 ArduiPi_OLED.h
     4 -rw-r--r-- 1 root staff  2474 jan  6 22:54 ArduiPi_OLED_lib.h
    64 -rw-r--r-- 1 root staff 61898 jan  6 22:54 bcm2835.h
    Alors j'ai édité le fichier
    https://github.com/hallard/RadioHead...client.cpp#L21
    et j'ai ajouté à la ligne 21 ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /*
     * OLED
     */
    #include "ArduiPi_OLED_lib.h"
    #include "Adafruit_GFX.h"
    #include "ArduiPi_OLED.h"
    #include <getopt.h>
     
    // Instantiate the display
    ArduiPi_OLED display;
    Ce qu'il se passe, c'est qu'après avoir ajouter ceci et je compile, j'ai ce message d'erreur:
    pierrot@smartidea2:~/Soft/RadioHead/examples/raspi/rf95 $ sudo make
    g++ -DRASPBERRY_PI -DBCM2835_NO_DELAY_COMPATIBILITY -D__BASEFILE__=\"rf95_server\" -c -I../../.. rf95_server.cpp
    g++ rf95_server.o RH_RF95.o RasPi.o RHHardwareSPI.o RHGenericDriver.o RHGenericSPI.o RHSPIDriver.o -lbcm2835 -o rf95_server
    rf95_server.o*: Dans la fonction «*__static_initialization_and_destruction_0(int, int)*»*:
    rf95_server.cpp.text+0x438)*: référence indéfinie vers «*ArduiPi_OLED::ArduiPi_OLED()*»
    rf95_server.o*: Dans la fonction «*Adafruit_GFX::~Adafruit_GFX()*»*:
    rf95_server.cpp.text._ZN12Adafruit_GFXD2Ev[_ZN12Adafruit_GFXD5Ev]+0x30)*: référence indéfinie vers «*vtable for Adafruit_GFX*»
    rf95_server.o*: Dans la fonction «*ArduiPi_OLED::~ArduiPi_OLED()*»*:
    rf95_server.cpp.text._ZN12ArduiPi_OLEDD2Ev[_ZN12ArduiPi_OLEDD5Ev]+0x38)*: référence indéfinie vers «*vtable for ArduiPi_OLED*»
    collect2: error: ld returned 1 exit status
    Makefile:45*: la recette pour la cible «*rf95_server*» a échouée
    make: *** [rf95_server] Erreur 1
    pierrot@smartidea2:~/Soft/RadioHead/examples/raspi/rf95 $
    Donc là, je suis largué particulièrement avec ceci
    rf95_server.o : Dans la fonction « __static_initialization_and_destruction_0(int, int) » :
    rf95_server.cpp.text+0x438) : référence indéfinie vers « ArduiPi_OLED::ArduiPi_OLED() »
    Comment je peux utilisé une libraiire externe à RadioHead, soit ArduiPI_OLED, pour afficher un paquet Radio sur l'ecran LCD?

    Que dois-je faire de plus que d'inclure ArduiPi_OLED?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include "ArduiPi_OLED_lib.h"
    #include "Adafruit_GFX.h"
    #include "ArduiPi_OLED.h"
    #include <getopt.h>

    Je vous remercie pour vos lumières

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    Ne faudrait-il pas faire référence aux librairies ArduiPi dans le makefile ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Bonjour,
    Merci pour ta réponse.
    J'ai pensé à ceci mais je sais pas comment le faire.

    Est-ce que je dois faire une référence sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ls -ls /usr/local/include/
    total 80
     4 -rw-r--r-- 1 root staff  3931 jan  6 22:54 Adafruit_GFX.h
     8 -rw-r--r-- 1 root staff  7272 jan  6 22:54 ArduiPi_OLED.h
     4 -rw-r--r-- 1 root staff  2474 jan  6 22:54 ArduiPi_OLED_lib.h
    64 -rw-r--r-- 1 root staff 61898 jan  6 22:54 bcm2835.h
    ou sur
    https://github.com/hallard/ArduiPi_OLED

    Ce qu je pense, mais je ne suis absolument pas sûre de moi, c'est d'ajouter un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OLEDBASE = ../../../../ArduiPi_OLED
    INCLUDE = -I$(OLEDBASE)
    à la ligne 11
    https://github.com/hallard/RadioHead...5/Makefile#L11

    Simplement, il y auara deux include. Si mon idée est juste, on ne peut pas concaténer ceci, peut-être comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INCLUDE = -I$(OLEDBASE) -I$(OLEDBASE)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INCLUDE = -I$(OLEDBASE)+$(OLEDBASE)
    ????

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Bonjour

    La solution était de remplacer cette ligne
    https://github.com/hallard/RadioHead...95/Makefile#L8
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBS = -lbcm2835 -lArduiPi_OLED
    Ca marche!!! Oupiii

    Pour plus de détail, voici plus d'explication:http://smart-idea.io/raspberry-zero-...ioheadmakefile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. référence indéfinie vers.
    Par étoile de mer dans le forum GTK+
    Réponses: 3
    Dernier message: 21/03/2014, 14h22
  2. référence indéfinie vers « _imp__Py_SetProgramName »
    Par ttf dans le forum Interfaçage autre langage
    Réponses: 5
    Dernier message: 29/03/2011, 14h01
  3. Réponses: 2
    Dernier message: 08/03/2010, 17h00
  4. référence indéfinie vers « vtable for FenPrincipale
    Par yLaplace dans le forum Débuter
    Réponses: 5
    Dernier message: 01/03/2010, 13h49
  5. Réponses: 10
    Dernier message: 02/01/2007, 12h07

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