sketch et bibliothèque

Bonjour à toutes et à tous,

Pour généraliser et simplifier le propos que j’ai cité dans le fil “Problème de transfert d’une classe dans une bibliothèque”, le problème est le suivant :

dans une bibliothèque BC que je crée, j’utilise en local une donnée d’une bibliothèque existante, mettons la structure Time de la bibliothèque DS1307. Dans la bibliothèque BC, j’écris donc :

include <DS1307.h>

J’ai maintenant un sketch qui utilise ma bibliothèque BC, mais pas la bibliothèque DS1307, j’y écris donc :

include <BC.h>

Si je compile cela, j’obtiens une erreur me disant :

dans la bibliothèque BC : error: 'Time' does not name a type

je rajoute alors dans mon sketch :

include <DS1307.h>

et là ça fonctionne ???

Comme je l’ai rajoutée au sketch, je l’enlève de ma bibliothèque BC : je retombe alors sur le même problème. J’en conclus que pour qu’une bibliothèque “que l’on crée” ne pose pas de problème, il faut inclure dans cette bibliothèque et dans le sketch la bibliothèque utilisée. Cela me semble d’un illogisme le plus total, mais j’ai surement raté quelque chose.

Merci de vos éclaircissements.

Pierre

Version courte:
C'est une arduinerie et on y peut rien =(

Version plus longue:
C'est lié à la façon dont fonctionne l'IDE. Ce n'est pas standard comme mode de fonctionnement mais comme on ne peut pas modifier l'IDE il faut s'en accommoder.

Merci fdufnews pour ces précisions.

J'ai fait une manip : j'ai pris les bibliothèques que j'utilisais et les ai mises dans le même répertoire que celle que je crée : ça fonctionne. Donc, apparemment, le problème est de trouver le chemin où se trouvent les bibliothèques que l'on utilise. J'ai fait quelques essais, mais pas concluant jusqu'à présent. Je vais persister un peu.

Cordialement.

Pierre

avec : #include <DS1307.h>, j’ai l’erreur suivante :

C:\Documents and Settings\Pierre\Mes documents\Arduino\libraries\ChP_Base\CarteSD.cpp:5: error: ‘Time’ does not name a type

et avec : #include <…/DS1307/DS1307.h> (ou le chemin absolu de la bibliothèque), j’ai l’erreur suivante :

ChP_Base\CarteSD.cpp.o: In function __static_initialization_and_destruction_0':* *C:\Documents and Settings\Pierre\Mes documents\Arduino\libraries\ChP_Base/CarteSD.cpp:5: undefined reference to Time::Time()’

On a l’impression qu’il y a deux niveaux de recherche. Le premier au niveau syntaxique et qui serait passé en donnant le chemin et un deuxième niveau (édition de lien ?) où ce chemin ne suffit pas.

Cordialement.

Pierre

j'ai eu un souci équivalent, lorce que j'ai tenté une mise à jour du compilateur. avec le vieux (fournit d'origine par arduino), les chemins de compilations étaient passés en vrac avec des espaces dans le chemin ("programm files" par exemple), et avec le nouveau compilateur, (sans toucher à l'ide) les chemins devenaient "programm\ files", et pouf, le compilateur foirait. c'est au niveau de l'ide que ça merdouille.... pas trouvé pourquoi ni comment...