Go Down

Topic: undefined reference to `__cxa_guard_acquire' (Read 1 time) previous topic - next topic

infobarquee

bonjour,
j'ai trouvé un ino afin de piloter une raquette (non, pas de tennis) EQ5 d'astronomie
https://github.com/TCWORLD/AstroEQ

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

Quote
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 :)

B@tto

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 :
Code: [Select]

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


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

Code: [Select]

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);



fdufnews

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

skywodd

Bonjour,

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

Cf :
http://arduino.cc/forum/index.php?topic=47304.0
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

infobarquee

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

Quote
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

barbudor

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 ;) (Skywodd, bosse tes partiels !)
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

skywodd


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 ;)

cf http://skyduino.wordpress.com/2012/07/07/hack-utiliser-teensyduino-avec-une-carte-arduino-leonardo-ou-compatible-leonardo/
(point n°1, 2 et 3)


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

Mais heu ! Je bosse, je bosse :smiley-mr-green:
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

infobarquee

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 :) pas du nunux

skywodd


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

Ha ben si Monsieur est manchot il peut aller ce jeter par la fenêtre :smiley-mr-green:
(le troll c'est 'dredi ! Nan mais ho XD)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

barbudor

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

XD => []
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?


Tom Carpenter

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

Go Up