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 » [Addin] Créer des objets
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

[Addin] Créer des objets

Posté le 14/06/2015 20:01

Bonjour,
programmer un addin avec le SDK est-il possible en C++ pour avoir les avantage de la POO ainsi que les autres amélioration de ce langage par rapport au C, si oui comment ?

Merci d'avance

PS : Savez vous comment utiliser d'autres fichier c et h avec des prototypes :
// head.h
#ifndef CLASS_HEADER
#define CLASS_HEADER

int getTime();

#endif

// head.c
#include "head.h"

int getTime() {
    return 99;
}


Ce code me sors ça a la compilation : Duplicate symbol "_getTime"


Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 14/06/2015 22:23 | #


Gregleboss23 a écrit :
programmer un addin avec le SDK est-il possible en C++ pour avoir les avantage de la POO ainsi que les autres amélioration de ce langage par rapport au C, si oui comment ?

Oui, il suffit de nommer les fichiers avec l'extension cpp.
Cependant, il n'y a pas de STL...

Gregleboss23 a écrit :
PS : Savez vous comment utiliser d'autres fichier c et h avec des prototypes :

Le code est tout à fait bon, il doit y avoir une erreur dans la gestion de projet... n'as-tu pas ajouté le header aux fichiers sources, ou le fichier source deux fois ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 15/06/2015 18:09 | #


Merci pour ta réponse mais j'ai une erreur quand je créer un class
Screen de l'erreur et du code

Et pour le header tout à l'air bien pourtant : voir ici
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 18:11 | #


Tu ne peux pas utiliser de classe dans le fichier Firster.c...

Ajouté le 15/06/2015 à 18:14 :
Au passage, tu as tenté de tout recompiler (Project > Rebuild All) ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 15/06/2015 18:14 | #


Effectivement tu peux faire de la POO même si comme le dit Kro, il n'y a pas de bibliothèque standard (donc pas de string ou autres vectors, que les fonctions du C...)
Attention cependant, les headers C doivent être mis dans un bloc
extern "C" { }

Je te conseille aussi de mettre les headers c++ dans des fichiers .hpp et non .h pour faire la différence !
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 15/06/2015 18:16 | #


Accesoirement, je sais pas trop si ca a un rapport mais:
n'as-tu pas ajouté le header aux fichiers sources

head.h est dans les fichiers du projet
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 18:19 | #


C'est vrai que parmi les bizarreries du SDK, il y a des warnings si on ajoute les headers aux fichiers du projet... n'hésite pas à les enlever.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 15/06/2015 18:21 | #


1) Oui j'ai fais un rebuild all, il faut mettre en cpp aussi c'est ça ?
2) je test ça avec le "extern'
3) Oui je l'ai mis dans les fichiers du projet mais c'est normal non ? (il est dans header files)
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 18:23 | #


Gregleboss23 a écrit :
1) Oui j'ai fais un rebuild all, il faut mettre en cpp aussi c'est ça ?

Ben oui, il faut un fichier cpp pour utiliser des classes C++

Gregleboss23 a écrit :
3) Oui je l'ai mis dans les fichiers du projet mais c'est normal non ? (il est dans header files)

Confer mon commentaire précédent, il vaut mieux les enlever.

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

Citer : Posté le 15/06/2015 18:28 | #


Du coup j'ai mis en cpp et hpp tous les fichiers mais j'ai cette erreur
Undefined external symbol "locate(int, int)" referenced in ...

Et avec :
extern "C" {
    int getTime();
}

j'ai ça : Illegal token "C"
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 18:36 | #


Gregleboss23 a écrit :
Du coup j'ai mis en cpp et hpp tous les fichiers mais j'ai cette erreur
Undefined external symbol "locate(int, int)" referenced in ...

Pour utiliser un fichier main C++, il faut mettre toutes les macros de fin, et la fonction AddIn_main() dans un extern "C"

Gregleboss23 a écrit :
Et avec :
extern "C" {
    int getTime();
}

j'ai ça : Illegal token "C"

Je n'ai jamais eu de problème avec ça... c'est bien un fichier C++ ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 15/06/2015 18:53 | #


1) J'ai fais comme ça mais toujours la même erreur : http://puu.sh/ipRUi/06577d0f30.cpp
2) Non ici c'est un .h mais ce n'est que du C :/
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 15/06/2015 20:44 | #


Dans le extern, t'as du C++ avec l'objet Test, je sais pas si ca passe.
Et il me semble que fxlib doit etre definie dans un extern aussi, mais il est possible que je dise des conneries
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 15/06/2015 21:01 | #


C'est bon génial ça marche avec le include dans extern !

Par contre toujours le même probleme avec le header en C :/
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 22:21 | #


As-tu au moins essayé de ne pas inclure le header et de juste prototyper dans le fichier pour voir ?
Ah oui, tu peux supprimer le dossier Debug et faire une recompilation complète aussi.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gregleboss23 Hors ligne Membre Points: 35 Défis: 0 Message

Citer : Posté le 15/06/2015 22:24 | #


Le extern "C" ne marche visiblement pas dans un fichier .c/.h j'ai donc tous mis en .hpp et .cpp et c'est niquel
Merci à tous
Lephenixnoir En ligne Administrateur Points: 24700 Défis: 170 Message

Citer : Posté le 15/06/2015 22:25 | #


Gregleboss23 a écrit :
Le extern "C" ne marche visiblement pas dans un fichier .c/.h

Ben... ben évidemment ! xD
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 63 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