Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Développement en C++ pour FXCG50
Jhb Hors ligne Membre Points: 51 Défis: 0 Message

Développement en C++ pour FXCG50

Posté le 07/11/2023 11:43

Bonjour,
Tout d'abord félicitations pour les excellents tutoriels sur le dev. en C; tout y est ou presque pour débuter !!!

J'ai juste une question : je souhaite développer en C++ mais à chaque fois le linker me met des messages d'erreur lorsque j'utilise des méthodes virtuelles.
Différents codes source ont été testés sous Linux Fedora / GCC avec code::blocks et sous Windows avec Visual Studio. tout fonctionne avec ces 2 environnement mais pas avec gint.

J'ai les même options de compilations par défaut dans les différentes environnements : Wall Wextra Os

Lorsque je "remplace" des méthodes virtuelles par des méthodes plus typées C, plus de problème de link.

A titre d'exemple, un simple destructeur virtuel est cause d'erreur.

Y a t'il une limitation avec les définitions virtuelles ?

Je vous remercie,


Lephenixnoir Hors ligne Administrateur Points: 24582 Défis: 170 Message

Citer : Posté le 07/11/2023 12:47 | #


Bonjour, il n'y a pas de limite ça devrait fonctionner. Peux-tu nous montrer ton code, les instructions de compilation (Makefile / CMakeLists.txt) et les erreurs exactes que tu obtiens ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2390 Défis: 17 Message

Citer : Posté le 07/11/2023 13:01 | #


J'ai eu ce problème avec la µSTL avant que nous ayons le support de la libstdc++ dans gint 2.9.0.
Mais j'avoue ne pas avoir réessayé les méthodes virtuelles depuis lors.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24582 Défis: 170 Message

Citer : Posté le 07/11/2023 14:40 | #


Note qu'il faut linker avec la lib standard, ce qui n'est pas automatique ; ajouter -lstdc++ dans target_link_libraries() dans CMakeLists.txt.

target_link_libraries(myaddin Gint::Gint -lstdc++)

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Jhb Hors ligne Membre Points: 51 Défis: 0 Message

Citer : Posté le 07/11/2023 17:43 | # | Fichier joint


Ca va bcp mieux avec la librairie mais il reste une erreur :

[ 33%] Linking CXX executable myaddin
/home/jhb/.local/share/fxsdk/sysroot/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld : /home/jhb/.local/share/fxsdk/sysroot/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/lib/libstdc++.a(c++locale.o) : dans la fonction « __ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi » :
(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0xf4) : référence indéfinie vers « _sscanf »
collect2: erreur: ld a retourné le statut de sortie 1
make[2]: *** [CMakeFiles/myaddin.dir/build.make:111 : myaddin] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:83 : CMakeFiles/myaddin.dir/all] Erreur 2
make: *** [Makefile:91 : all] Erreur 2


Le fichier cpp de test est le suivant :


#include <iostream>
using namespace std;

class principale{
    public:
    principale(){
        cout << "\t-Construction - principale" << endl;
    }

    virtual ~principale(){
        cout << "\t-fin principale" << endl;
    }

    void affiche(){
        cout << "\t-Affiche - principale" << endl;
    }

    virtual void afficheBis(){
        cout << "\t-AfficheBis virtualisée - principale" << endl;
    }

};


int main()
{
    cout << "Principale" << endl;
    principale* p1 = new principale();

    p1->affiche();
    p1->afficheBis();
    delete p1;

    return 0;
}
Lephenixnoir Hors ligne Administrateur Points: 24582 Défis: 170 Message

Citer : Posté le 07/11/2023 17:54 | #


Ça c'est parce que notre libc n'a pas la fonction... il y a une PR mais pas encore mergée. :x
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 600 Défis: 10 Message

Citer : Posté le 07/11/2023 17:58 | #


Ouiap il faut utiliser les fonctions de Gint, de toute façon il n'y a pas de terminal/console ou quoi que ce soit (pour le moment ?)
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Lephenixnoir Hors ligne Administrateur Points: 24582 Défis: 170 Message

Citer : Posté le 07/11/2023 18:11 | #


Il y a bel et bien stdin/stdout dans gint, par contre il faut en effet les connecter à la main à une forme de GUI.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Jhb Hors ligne Membre Points: 51 Défis: 0 Message

Citer : Posté le 07/11/2023 18:29 | #


Merci. Effectivement en traçant avec dtext la génération de code fonctionne parfaitement.

Merci et bonne soirée
Validuser Hors ligne Membre Points: 508 Défis: 1 Message

Citer : Posté le 07/11/2023 18:34 | #


Sans être trop indiscret (un petit peu quand même) , le jeu, utilitaire ou cours va porter sur quoi et sera sur quelle plateforme ?
Votre développeur favori
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Ne pas cliquer
Mtn que tu à cliqué tu est obligé de tout installer
Jhb Hors ligne Membre Points: 51 Défis: 0 Message

Citer : Posté le 07/11/2023 19:20 | #


J'ai promis un petit Tetris à mon fils pour sa nouvelle Graph 90+E.
Je comptais le développer en Python, mais certains fonctions manquent, notamment la gestion du clavier (ou je ne les ai pas trouvées). Donc ce sera en C++.
Fcalva Hors ligne Membre Points: 600 Défis: 10 Message

Citer : Posté le 07/11/2023 19:22 | #


Oui effectivement la gestion du clavier manque, ce n'est pas ta faute ici.
Sinon il y a le basic Casio, mais un Tetris en C++ pour une fois sera rafraichissant.
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Validuser Hors ligne Membre Points: 508 Défis: 1 Message

Citer : Posté le 08/11/2023 12:20 | #


Jhb a écrit :
J'ai promis un petit Tetris à mon fils pour sa nouvelle Graph 90+E.
Je comptais le développer en Python, mais certains fonctions manquent, notamment la gestion du clavier (ou je ne les ai pas trouvées). Donc ce sera en C++.

Wow trop cool ! J'envie votre fils
Eh ouaip comme à dit l'avait dis Fcalva précédemment le python sur Casio est ... Juste nul enfaîte
Votre développeur favori
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Ne pas cliquer
Mtn que tu à cliqué tu est obligé de tout installer

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 27 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd