undefined reference to `__cxa_guard_acquire'

bonjour,
j'ai trouvé un ino afin de piloter une raquette (non, pas de tennis) EQ5 d'astronomie

par contre j'ai une erreur à la compile, et malgré mes recherches, je ne comprends pas trop ce qu'il veut dire par :
//Create an instance of the mount
ce qui provoquerait l'erreur suivante

AstroEQ5.cpp.o: In function setup': AstroEQ5.cpp:212: undefined reference to __cxa_guard_acquire'
AstroEQ5.cpp:214: undefined reference to `__cxa_guard_release'

merci d'avance pour vos lumières astrales :slight_smile:

L'instanciation est un concept de programmation, très utile avec les librairie puisqu'il te permet de l'utiliser plusieurs fois. Par exemple, si tu utilise la librairie stepper pour les moteurs pas à pas, il y a une instanciation au début où tu définis ton moteur :

Stepper myStepper = Stepper(100, 5, 6);

Tu as instancié "myStepper", mais rien ne t'empêche ici de rajouter d'autres moteurs,

Stepper myStepper = Stepper(100, 5, 6); 
Stepper myStepper2 = Stepper(100, 7, 8); 
// et je leur fait faire un tour
myStepper.step(100);
myStepper2.step(100);

Le message fait penser à une librairie manquante ou à un fichier manquant dans une librairie.

Bonjour,

Il doit y avoir un "static" quelque pars dans la librairie qui n'est pas à sa place.

Cf :

vi j'avais lu ce topic déjà et comme beaucoup en virant le static de

void loop(){
static unsigned long lastMillis = millis();
static boolean isLedOn = false;

effectivement plus d'erreur, mais ca ne doit pas être une solution fiable je pense

Surtout ca ne fait plus ce que c'est sensé faire

Quand les variables lastMillis et isLedOn sont déclarées static, leur valeur est conservée entre 2 appels à loop.
Si tu vire static ce n'est plus le cas.

La bonne solution est de virer static et de déplacer ces variables en tant que globales a l'extérieur de loop.

Une variable statique d'une fonction est équivalent d'un point de vue stockage/mémoire à une variable globale mais sa portée est limitée à la fonction dans laquelle elle est déclarée. C'est à dire que personne d'autre ne peut y accéder que le code de la fonction.
Une variable globe est accessibles par tout le monde.

Si tu décide de ne pas accéder à une variable globale que a partir d'une fonction donnée, ca revient au même.

Dernière différence: 2 fonctions toto() et tata() peuvent chacune avoir une variable static int titi; qui sont 2 varaibles différentes.
par contre si tu les sorts en variables globales cette distinction n'existe plus. Par sécurité appeller alors les variables toto_toto et tata_titi

Mais où va t'il chercher des noms aussi débiles... Pauvre Barbudor

Le topic du forum donné en référence par Skywood semble pourtant dire qu'il n'y a pas de problème avec les variables statiques scalaires, uniquement avec les objets composés (compound = classes ou structures). Il est suggéré que ce soit un bug du compil avr-gcc car ceci mis a part cette syntaxe est parfaitement légale.

A essayer.... mais là c'est trop tard pour lancer l'IDE. Bonne nuit :wink: (Skywodd, bosse tes partiels !)

barbudor:
Le topic du forum donné en référence par Skywood semble pourtant dire qu'il n'y a pas de problème avec les variables statiques scalaires, uniquement avec les objets composés (compound = classes ou structures). Il est suggéré que ce soit un bug du compil avr-gcc car ceci mis a part cette syntaxe est parfaitement légale.

Dans le pire des cas une petite màj de avr-gcc ne peut faire que du bien :wink:

cf [Hack] Utiliser teensyduino avec une carte arduino leonardo ou compatible leonardo | Skyduino - Le DIY à la française
(point n°1, 2 et 3)

barbudor:
A essayer.... mais là c'est trop tard pour lancer l'IDE. Bonne nuit :wink: (Skywodd, bosse tes partiels !)

Mais heu ! Je bosse, je bosse :grin:

alors, ce matin entre 2 coups de téléphone, j'ai mis les 2 lignes incriminées en début comme des variables normales.
plus d'erreur, mais est ce aussi suite à la maj de mon nunux hier soir en 12.04 au lieu de 10.10 (que j'aurai pas du faire d'ailleurs, unity une vraie daube)

edit, c'est quoi windaub? car le lien de sky va pour du windaub :slight_smile: pas du nunux

infobarquee:
edit, c'est quoi windaub? car le lien de sky va pour du windaub :slight_smile: pas du nunux

Ha ben si Monsieur est manchot il peut aller ce jeter par la fenêtre :grin:
(le troll c'est 'dredi ! Nan mais ho XD)

Un pingouin manchot ?
Rien ne va plus
C'est merdredi

XD => []

héhé :grin:

As I wrote the AstroEQ code, I thought I should offer my assistance in solving the issue. Unfortunately I don't speak French.