Go Down

Topic: Problème de linkage avec [Code::Blocks for Arduino] (Read 93 times) previous topic - next topic

Wabbina

Bonjour à tous,
je suis novice dans la réalisation de projet avec Arduino. J'utilise l'environnement l'IDE d'Arduino. Seulement, j'ai trouvé cet environnement est très limité en complétion. Du coup, après avoir effectué des recherches sur internet, j'ai trouvé une version de Code::Blocks pour Arduino (le lien est ici). Pour tester cet environnement, j'ai utilisé un code utilisant le module "IR receiver". Après compilation, je reçois des erreurs de linkage:

Quote
IRReceiver.cpp:(.text._ZN10IRReceiver4nextEv+0x0): undefined reference to `IRrecv::resume()'
build\IRReceiver.o: In function `IRReceiver::start()':
IRReceiver.cpp:(.text._ZN10IRReceiver5startEv+0x0): undefined reference to `IRrecv::enableIRIn()'
build\IRReceiver.o: In function `IRReceiver::hasReceivedSignal()':
IRReceiver.cpp:(.text._ZN10IRReceiver17hasReceivedSignalEv+0x6): undefined reference to `IRrecv::decode(decode_results*)'
build\IRReceiver.o: In function `IRReceiver::IRReceiver(unsigned char const&)':
IRReceiver.cpp:(.text._ZN10IRReceiverC1ERKh+0xc): undefined reference to `IRrecv::IRrecv(int)'
Comment résoudre mon problème ? Merci d'avance

hbachetti

IRremote : quelle librairie ?

Le même code compile t-il avec IDE ARDUINO ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Wabbina

IRremote : quelle librairie ?

Le même code compile t-il avec IDE ARDUINO ?

La librairie "IRremote" est celle fourni par "ELEGOO". Le code compile avec l'IDE Arduino. Cependant, j'ai trouvé la solution à mon problème de linkage. Le problème est purement liée au langage C++. En effet, quand on réalise un projet C++ où l'on utilise une librairie externe, il faut nécessairement spécifier le fichier "lib" librairie (c'est un fichier dont l'extension dépend du type de compilateur. Pour un compilateur gcc, on a par exemple "mon_lib.a") dans l'éditeur de liens.
Sauf que la librairie "IRremote" ne contient pas ce type fichier. Du coup, en compilant, on a un problème de linkage. Pour résoudre le problème, il faut tout simplement inclure les fichiers (.h et .cpp) dans le projet et tout compiler.

Au déla de ce problème, je trouve que l'IDE "CodeBlocks for Arduino" utilisant une vielle version d'arduino. J'ai constaté que certaines fonctions fonctionnent correctement dans l'IDE Arduino tandis qu'en passant sous codeblocks, on me dit que ce n'est pas définie. Du coup, je suis embetté. Une solution?

hbachetti


L'IDE ARDUINO est fait pour faciliter les choses aux non connaisseurs du langage C/C++.
Tout le monde ne sait pas ce qu'est un lien ou un Makefile.

Personnellement pour les projets nécessitant pas mal de fichiers source j'utilise PlatformIO
Sinon, jusqu'à maximum 5 j'utilise l'IDE ARDUINO.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up