Teranmoc
Posts: 3
Joined: Wed Aug 27, 2014 11:17 am

Transmission RF via nRF24L01 et C++

Wed Aug 27, 2014 11:21 am

Bonjour,
Après plusieurs heures (et encore, c'est un euphémisme !) de galère pour faire fonctionner la librairie RF24 dans un programme écrit en C++, je viens quérir votre aide !
J'ai installé la librairie RF24 via ce github : https://github.com/gnulnulf/RF24 et je me retrouve donc avec le dossier qui contient à sa racine des .h et .cpp mais en les incluant dans mon programme rien ne marche (erreurs à la compilation). Puis j'ai pris les fichiers des exemples qui se trouve dans le dossier RF24/librf24-rpi/librf24/
Ce coup çi, aucun problème mais lorsque je déclare un objet de type RF24, là ça plante !
Une idée ?
Merci !

clint westwood
Posts: 52
Joined: Fri Aug 03, 2012 12:16 pm

Re: Transmission RF via nRF24L01 et C++

Wed Aug 27, 2014 12:55 pm

Bonjour,
Ton post ne fournis pas beaucoup d'informations.
Pour t'aider nous avons besoin de :
-La manière dont tu as installé ta librairie (à coup de make/install ou bien pas installé :p ?).
-Ton code C++ qui pose problème et l'endroit où ton programme plante si tu as fais un coup de debug.
- La ligne ou le script pour que tu utilises pour compiler ton programme et les éventuelles erreurs

Teranmoc
Posts: 3
Joined: Wed Aug 27, 2014 11:17 am

Re: Transmission RF via nRF24L01 et C++

Wed Aug 27, 2014 1:36 pm

clint westwood wrote:Bonjour,
Ton post ne fournis pas beaucoup d'informations.
Pour t'aider nous avons besoin de :
-La manière dont tu as installé ta librairie (à coup de make/install ou bien pas installé :p ?).
-Ton code C++ qui pose problème et l'endroit où ton programme plante si tu as fais un coup de debug.
- La ligne ou le script pour que tu utilises pour compiler ton programme et les éventuelles erreurs
Bien sûr.
J'ai installé la librairie en suivant un tuto, avec les make dans le répertoire librf24-rpi/librf24/ et make install.

La portion de code qui pose problème est la création d'un objet de type RF24 :

Code: Select all

RF24 radio("/dev/spidev0.0",8000000 , 25);
Qui me sort cette erreur :
(.text+0x50): undefined reference to `RF24::RF24(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned char)'
Et pour compiler j'utilise le makefile car j'ai écrit des fonctions perso dans un fichier spécifique.

Je soupçonne un librairie manquante vu le makefile des exemples mais impossible de trouver !

Merci :)

clint westwood
Posts: 52
Joined: Fri Aug 03, 2012 12:16 pm

Re: Transmission RF via nRF24L01 et C++

Wed Aug 27, 2014 2:32 pm

As tu ajouté la bibliothèque lrf24 ?
Si ce n'est pas le cas, ajoutes cela à ta ligne de compilation: -lrf24-bcm

exemple:

Code: Select all

gcc -o toto toto.cpp -lrf24-bcm

Teranmoc
Posts: 3
Joined: Wed Aug 27, 2014 11:17 am

Re: Transmission RF via nRF24L01 et C++

Thu Aug 28, 2014 9:48 am

Il ne faut pas lier la librairie avec -L justement ?
La compilation de chaque fichier objet fonctionne parfaitement (le programme se compose d'une classe permettant de gérer la transmission, d'un fichier main et d'un fichier contenant les méthodes nécessaires) mais plante au niveau de l'édition de lien avec cette erreur :
g++ -o Transmission fonctions.o transmission.o main.o
main.o: In function `main':
main.cpp:(.text.startup+0x40): undefined reference to `RF24::RF24(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned char)'
collect2: ld returned 1 exit status
make: *** [Transmission] Erreur 1
Le makefile :

Code: Select all

FLAG=-Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s

Transmission: fonctions.o transmission.o main.o
        g++ -o Transmission fonctions.o transmission.o main.o

all: fonctions.o transmission.o main.o

fonctions.o: fonctions.cpp fonctions.h
        g++ -c fonctions.cpp

transmission.o: transmission.cpp fonctions.h
        g++ -c $(FLAG) transmission.cpp -lrf24-bcm

main.o: main.cpp fonctions.h
        g++ -c $(FLAG) main.cpp -lrf24-bcm

clean:
        rm -f *.h~
        rm -f *.cpp~
        rm -f *.o

Return to “Français”