AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

 

 Compiler fichier externe n C++, possible ?

Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 18:01

onilink_ a écrit:
Le moyen le plus simple est de faire un fichier batch (extension .bat) et d'écrire ce que j'ai mis plus haut.
Et si t'as pas la commande gcc tu met le lien absolut de gcc a la place.
oki, et pour ce qui est d'inclure la SDL et tout ? faut que je dise où sont les libs, et tout, non ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 18:30

ouai.
Pour indiquer un fichier d'includes faut utiliser -I"chemin"
pour les libs : -L"chemin"
et pour inclure les libs : -lnomlib

Voila un ptit manuel pour gcc : http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/gcc.1.html

_________________
Compiler fichier externe n C++, possible ? - Page 2 Runningpotato1Compiler fichier externe n C++, possible ? - Page 2 TvF6GED Compiler fichier externe n C++, possible ? - Page 2 MdetltS
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 19:04

Yep, merci Oni ! mrgreen2

edit: Juste un détail, mais en général je vois les gens utiliser g++, moi j'ai que gcc et j'me sers du mingw de code::blocks, mais apparemment il gère le c++, j'me trompe?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 19:52

ouaip

_________________
Compiler fichier externe n C++, possible ? - Page 2 Runningpotato1Compiler fichier externe n C++, possible ? - Page 2 TvF6GED Compiler fichier externe n C++, possible ? - Page 2 MdetltS
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 20:23

Ah, réussi \o/

Merci à toi Very Happy

Donc, du coups je peux me servir de gcc pour linker mes fichiers *.o et les foutre dans mon moteur ? hap

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 21:29

Seulement si tu compile tout d'un coup.

_________________
Compiler fichier externe n C++, possible ? - Page 2 Runningpotato1Compiler fichier externe n C++, possible ? - Page 2 TvF6GED Compiler fichier externe n C++, possible ? - Page 2 MdetltS
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 21:44

onilink_ a écrit:
Seulement si tu compile tout d'un coup.

hmm, voilà en gros la structure (basée sur l'exemple de Blendman qu'il a posté sur le CBNA gnii )

Il y a le fichier event_list qui stocke toute les instances du jeu, et event class qui est la base d'un object( create,step,draw).
Donc là je cherche à faire un truc tout con, faire de mon joueur (qui est enfant de event_class) un fichier *.o que je veux ensuite placer dans ma "room" en l'ajoutant à la event_list et en lui filant des coordonnées x & y de départ..
Mais lors de la compilation, je vois pas comment ajouter mon player.o, faudrait y mettre quoi dans gcc ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
kiguawne
Plutôt bien
kiguawne

Messages : 45
Localisation : Bretagne
Projet Actuel : un jeux en ligne que j'aimerais faire mais qui est en attente, en attendant que je sois rendu au niveau pro

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 21:51

allez, si on parlait français pour voir gnii
( en clair, même après avoir lu 2 fois de suite, j'ai toujours rien compris Very Happy)

_________________
Compiler fichier externe n C++, possible ? - Page 2 88x31
et pour ceux qui veulent rejoindre mon armées^^: http://princes.minitroopers.fr
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyVen 22 Avr 2011 - 21:56

kiguawne a écrit:
allez, si on parlait français pour voir gnii
( en clair, même après avoir lu 2 fois de suite, j'ai toujours rien compris Very Happy)

Plait-il ? awesome

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Vivi
Utilisateur confirmé: Rang **
Vivi

Messages : 321
Localisation : dans ma chambre
Projet Actuel : ogc²

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 2:12

C'est surtout au niveau du code que ça changerais, enfaîte il te faudrait un truc du genre tableau qui contient des pointeurs de fonction, ce tableau serait remplis au démarrage à partir des modules du jeu, et les fonctions renseignée dans ce tableau serait des fonction d'instanciation des différents objet de ton jeu qui aurait comme prototype Object* fct(float x,float y). Mais justement c'est faire le lien entre la fonction qui remplis le tableau et ces fonction génériques qui semble plus délicat vu que théoriquement la fonction n'est pas sensé connaitre les module à lier, ceux ci devraient être renseigné dans un fichier ou quoi. Enfaîte je sais pas du-tout comment font les programme genre notepad++ ou autre où il suffit de rajouter une dll pour que ça marche, je suppose qu'ils gardent une structure de fichier précise genre le la fonction init est toujours à la même position ou du moins sa position est renseigné à une position fixe. fin soit c'est des éléments de réponses. Par contre pour en revenir à l'idée même je suis en train de faire un langage interprété qui fait genre code de haut niveau -> bytecode -> interpréteur , pour ce faire j'utilise flex et bison qui permettent, à partir d'une syntaxe simple, de créer un compilateur, tout simplement. (fin c'est pas si simple que ça).
Au début j'avais utiliser lua. Le "binding" avec le c++ est vraiment tout con avec LuaBind; ça permet de faire des truc fou du genre tu crée une classe lua qui hérite d'un objet qui a des fonction virtual, tu les redéfini dans le lua et quand tu appel les fonction en c++ sur un pointeur de l'objet de base mais qui enfaîte pointe vers la classe lua; la fonction est appelée correctement. Mais pour des raisons qui m’échappent c'est incroyablement lent. Donc je fais mon propre langage interprété.
fin soit je m'égare un peu là....
Mais bon l'idée générale, pour en revenir à la question de départ, c'est les pointeurs de fonctions.
Revenir en haut Aller en bas
http://www.opengamecreator.com
kiguawne
Plutôt bien
kiguawne

Messages : 45
Localisation : Bretagne
Projet Actuel : un jeux en ligne que j'aimerais faire mais qui est en attente, en attendant que je sois rendu au niveau pro

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 9:33

merci Termite gnii , sinon, une question débile, mais vu que le connais pas la réponse, mais que j'ai envie de la poser, c'est quoi le langage c++, et avec quel logiciel vous l'utiliser?

_________________
Compiler fichier externe n C++, possible ? - Page 2 88x31
et pour ceux qui veulent rejoindre mon armées^^: http://princes.minitroopers.fr
Revenir en haut Aller en bas
DeinDall
Utilisateur confirmé: Rang ****
DeinDall

Messages : 858
Localisation : ~Quimper
Projet Actuel : Un jeu où tu joues.

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 9:56


_________________
.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 11:11


_________________
Compiler fichier externe n C++, possible ? - Page 2 Runningpotato1Compiler fichier externe n C++, possible ? - Page 2 TvF6GED Compiler fichier externe n C++, possible ? - Page 2 MdetltS
Revenir en haut Aller en bas
kiguawne
Plutôt bien
kiguawne

Messages : 45
Localisation : Bretagne
Projet Actuel : un jeux en ligne que j'aimerais faire mais qui est en attente, en attendant que je sois rendu au niveau pro

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 14:11

a ok, merci pour le site et ton logiciel, il me reste plus qu'a apprendre happy1

_________________
Compiler fichier externe n C++, possible ? - Page 2 88x31
et pour ceux qui veulent rejoindre mon armées^^: http://princes.minitroopers.fr
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptySam 23 Avr 2011 - 15:37

Vivi a écrit:
C'est surtout au niveau du code que ça changerais, enfaîte il te faudrait un truc du genre tableau qui contient des pointeurs de fonction, ce tableau serait remplis au démarrage à partir des modules du jeu, et les fonctions renseignée dans ce tableau serait des fonction d'instanciation des différents objet de ton jeu qui aurait comme prototype Object* fct(float x,float y). Mais justement c'est faire le lien entre la fonction qui remplis le tableau et ces fonction génériques qui semble plus délicat vu que théoriquement la fonction n'est pas sensé connaitre les module à lier, ceux ci devraient être renseigné dans un fichier ou quoi. Enfaîte je sais pas du-tout comment font les programme genre notepad++ ou autre où il suffit de rajouter une dll pour que ça marche, je suppose qu'ils gardent une structure de fichier précise genre le la fonction init est toujours à la même position ou du moins sa position est renseigné à une position fixe. fin soit c'est des éléments de réponses. Par contre pour en revenir à l'idée même je suis en train de faire un langage interprété qui fait genre code de haut niveau -> bytecode -> interpréteur , pour ce faire j'utilise flex et bison qui permettent, à partir d'une syntaxe simple, de créer un compilateur, tout simplement. (fin c'est pas si simple que ça).
Au début j'avais utiliser lua. Le "binding" avec le c++ est vraiment tout con avec LuaBind; ça permet de faire des truc fou du genre tu crée une classe lua qui hérite d'un objet qui a des fonction virtual, tu les redéfini dans le lua et quand tu appel les fonction en c++ sur un pointeur de l'objet de base mais qui enfaîte pointe vers la classe lua; la fonction est appelée correctement. Mais pour des raisons qui m’échappent c'est incroyablement lent. Donc je fais mon propre langage interprété.
fin soit je m'égare un peu là....
Mais bon l'idée générale, pour en revenir à la question de départ, c'est les pointeurs de fonctions.
C'est ce qu'ils utilisent dans l'unreal engine, un interpréteur bytecode (environ 20x plus lent que le cpp)

Ben, j'pense que jvais me tourner vers de l'interprété, strop compliqué tout ce bordel, et le language est relativement simple (c'est que des if/Switchs)

Merci ! gnii

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:15

Termite a écrit:
Ben tout ce que je veux au fond, c'est pouvoir ajouter des objets à mon programme, sans que leur code soit dans l'executable (ressource externe)

Comme vivi l'a dit, l'idée c'est d'utiliser un langage de script(de préférence que tout le module de binding soit déjà compilable, car un langage de script c'est en soit-même un projet qui n'est pas insignifiant.) Moi, personnellement je te dirais que la solution préférable dépend de ce que tu veux. Si c'est pour faire du softcoding pour toi même, tu peux encapsuler la logique dans une Dll, plutôt que d'utiliser un langage de script. C'est beaucoup plus simple à intégrer et en général je te dirais que ce qui fait la différence c'est pas le langage, mais l'API haut niveau au dessus. Cependant, si tu veux créer un éditeur de niveau ou je ne sais quoi, je te conseillerais d'y aller plutôt avec un langage de script. Comme précédemment mentionné il y a Lua de disponible, sinon il y en a d'autre tu peux faire ta recherche toi-même. Si tu veux vraiment pousser je te conseillerais de lire Game scripting mastery de Alex Varanese. Ce livre te donne un bon aperçu du fonctionnement interne des langages de scripts et propose même d'en développer un soit-même. Tu peux cependant te limiter aux premiers chapitres qui montrent plutôt comment en intégrer un.
On peut le trouver dans ce beau pack de ebooks: thepiratebay.org 4621536/Game_Design_eBooks_Pack

_________________
PIS MANIAC PREND DES BAINS !


Dernière édition par Gab666 le Dim 24 Avr 2011 - 18:21, édité 1 fois
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:18

Gab666 a écrit:
Termite a écrit:
Ben tout ce que je veux au fond, c'est pouvoir ajouter des objets à mon programme, sans que leur code soit dans l'executable (ressource externe)

Comme vivi l'a dit, l'idée c'est d'utiliser un langage de script(de préférence que tout le module de binding soit déjà compilable, car un langage de script c'est en soit-même un projet qui n'est pas insignifiant.) Moi, personnellement je te dirais que la solution préférable dépend de ce que tu veux. Si c'est pour faire du softcoding pour toi même, tu peux encapsuler la logique dans une Dll, plutôt que d'utiliser un langage de script, car c'est beaucoup plus simple à intégrer et en général je te dirais que ce qui fait la différence c'est pas le langage, mais l'API haut niveau au dessus. Cependant, si tu veux créer un éditeur de niveau ou je ne sais quoi, je te conseillerais d'y aller plutôt avec un langage de script. Comme précédemment mentionné il y a Lua de disponible, sinon il y en a d'autre tu peux faire ta recherche toi-même. Si tu veux vraiment pousser je te conseillerais de lire Game scripting mastery de Alex Varanese. Ce livre te donne un bon aperçu du fonctionnement interne des langages de scripts et propose même d'en développer un soit-même. Tu peux cependant te limiter aux premiers chapitres qui montrent plutôt comment en intégrer un.
On peut le trouver dans ce beau pack de ebooks: thepiratebay.org 4621536/Game_Design_eBooks_Pack
Yup je vois, et non c'est pas pour moi personnellement, sinon je programmerais mes objects directement dans le moteur Very Happy

Jvais lire tout ça, merci mrgreen2

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:21

En fait je te dirais d'utiliser une Dll lorsque possible(quitte à programmer un mini-frontend qui va appeler ton compilateur) parce que tu vas avoir à beaucoup moins te faire chier pour la communication avec ton application hôte et surtout tu vas avoir accès à un langage beaucoup plus complet et flexible que n'importe quel langage de script.

_________________
PIS MANIAC PREND DES BAINS !


Dernière édition par Gab666 le Dim 24 Avr 2011 - 18:24, édité 1 fois
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:23

Gab666 a écrit:
En fait je te dirais d'utiliser une Dll lorsque possible parce que tu vas avoir à beaucoup moins te faire chier pour la communication avec ton application hôte et surtout tu vas avoir accès à un langage beaucoup plus complet et flexible que n'importe quel langage de script.

Mais en gros, la DLL me permettrait quoi ? de linker des fichiers *.o pendant le jeu ? Ou faut faire une dLL par nouveau "event" ..?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:31

Termite a écrit:
Gab666 a écrit:
En fait je te dirais d'utiliser une Dll lorsque possible parce que tu vas avoir à beaucoup moins te faire chier pour la communication avec ton application hôte et surtout tu vas avoir accès à un langage beaucoup plus complet et flexible que n'importe quel langage de script.

Mais en gros, la DLL me permettrait quoi ? de linker des fichiers *.o pendant le jeu ? Ou faut faire une dLL par nouveau "event" ..?

C'est comme tu veux, ce n'est pas pour linker des .o, mais plutôt pour avoir du code déjà compilé, mais indépendament de l'application hôte. Une dll en gros, c'est du code exécutable qui n'a pas de point d'entrée. Donc, lorsque tu crée une Dll tu peux donc exporter des symboles et ensuite dans ton application hôte, tu vas pouvoir dire, je charge telle Dll qui contient tel ou tel symbole. Le nom des symboles suivent une règle bien précise dépendament du langage (voir name mangling). Donc on peut exemple créer une librairie qui va gérer les événements pour ta Dll et ensuite ton host peut aller appeler les fonctions de cette librairies pour consulter les objets qui sont enregistrés, appeler tel ou tel évenement de tel ou tel objet. On peut également passer par une Dll intermédiaire ou il y a plein d'autre moyens, c'est au choix.

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:41

Gab666 a écrit:
Termite a écrit:
Gab666 a écrit:
En fait je te dirais d'utiliser une Dll lorsque possible parce que tu vas avoir à beaucoup moins te faire chier pour la communication avec ton application hôte et surtout tu vas avoir accès à un langage beaucoup plus complet et flexible que n'importe quel langage de script.

Mais en gros, la DLL me permettrait quoi ? de linker des fichiers *.o pendant le jeu ? Ou faut faire une dLL par nouveau "event" ..?

C'est comme tu veux, ce n'est pas pour linker des .o, mais plutôt pour avoir du code déjà compilé, mais indépendament de l'application hôte. Une dll en gros, c'est du code exécutable qui n'a pas de point d'entrée. Donc, lorsque tu crée une Dll tu peux donc exporter des symboles et ensuite dans ton application hôte, tu vas pouvoir dire, je charge telle Dll qui contient tel ou tel symbole. Le nom des symboles suivent une règle bien précise dépendament du langage (voir name mangling). Donc on peut exemple créer une librairie qui va gérer les événements pour ta Dll et ensuite ton host peut aller appeler les fonctions de cette librairies pour consulter les objets qui sont enregistrés, appeler tel ou tel évenement de tel ou tel objet. On peut également passer par une Dll intermédiaire ou il y a plein d'autre moyens, c'est au choix.
Donc du coups ce que je peux faire, c'est une phase de compilation des objects, qui sont foutu dans une DLL, et ensuite le moteur peut les appelés pour les créer, et la DLL gèrera leur comportement ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 18:58

http://msdn.microsoft.com/en-us/library/ms684175%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms683212%28v=vs.85%29.aspx

Je n'ai jamais eu vraiment à travailler avec des noms de fonctions qui changent dynamiquement, mais tu peux les prévoir. Je ne suis peut-être pas la personne la plus spécialisée là dedans, mais à mon avis il y a deux façon de faire. Première façon(ma préférée): on enregistre les fonctions en tant que exemple: Create event de l'objet Abc avec l'aide d'une librairie déjà programmé qui vient avec ton moteur. Cette même librairie aurait des fonctions qui te permettrais de récupérer les pointeurs vers ces fonctions ou même de les lister à partir de l'hôte. Deuxième façon(je ne le recommande pas, car ça dépend du compilateur utilisé et c'est pas très élégant): on exporte directement les fonctions sous une convention de nom précise, ensuite en utilisant les règles de name mangling on prédit le nom de l'événément. Ensuite dans ton éditeur de je ne sais pas quoi tu pourrais simplement appeler gcc ou un autre compilateur, ton éditeur deviendrait donc un frontend. Attention par contre, si tu ne veux pas que tes utilisateurs puissent entrer du code malicieux, je ne recommenderais pas les Dlls, c'est si tu veux maximiser les possibilités et minimiser le temps de développement.

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 19:06

Gab666 a écrit:
http://msdn.microsoft.com/en-us/library/ms684175%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms683212%28v=vs.85%29.aspx

Je n'ai jamais eu vraiment à travailler avec des noms de fonctions qui changent dynamiquement, mais tu peux les prévoir. Je ne suis peut-être pas la personne la plus spécialisée là dedans, mais à mon avis il y a deux façon de faire. Première façon(ma préférée): on enregistre les fonctions en tant que exemple: Create event de l'objet Abc avec l'aide d'une librairie déjà programmé qui vient avec ton moteur. Cette même librairie aurait des fonctions qui te permettrais de récupérer les pointeurs vers ces fonctions ou même de les lister à partir de l'hôte. Deuxième façon(je ne le recommande pas, car ça dépend du compilateur utilisé et c'est pas très élégant): on exporte directement les fonctions sous une convention de nom précise, ensuite en utilisant les règles de name mangling on prédit le nom de l'événément. Ensuite dans ton éditeur de je ne sais pas quoi tu pourrais simplement appeler gcc ou un autre compilateur, ton éditeur deviendrait donc un frontend. Attention par contre, si tu ne veux pas que tes utilisateurs puissent entrer du code malicieux, je ne recommenderais pas les Dlls, c'est si tu veux maximiser les possibilités et minimiser le temps de développement.
j'peux pas simplement compiler tout mes objects en tant que DLL qui stock tout dans un gros vector, et lorsque j'les fou dans ma map j'exécute le create, pis le step&dra à partir de ma DLL ? Et tout ce que le programme aura a récupérer "dynamiquement " c'est les positions x/y, les hitbox/hitzone & co (tout ce qui entre en intéraction avec le joueur quoi), et encore j'pense que tout ce qui est collisions sera géré par une dll Very Happy

edit : j'ai oublié de spécifier, que y'a aucune nouvelle fonction, le script est juste traduit et foutu dans le step sous gm, on peut appeller des fonctions mais elles sont prédéfinies par le moteur. C'est vraiment que du contrôle de comportement quoi

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 19:41

Termite a écrit:
Gab666 a écrit:
http://msdn.microsoft.com/en-us/library/ms684175%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms683212%28v=vs.85%29.aspx

Je n'ai jamais eu vraiment à travailler avec des noms de fonctions qui changent dynamiquement, mais tu peux les prévoir. Je ne suis peut-être pas la personne la plus spécialisée là dedans, mais à mon avis il y a deux façon de faire. Première façon(ma préférée): on enregistre les fonctions en tant que exemple: Create event de l'objet Abc avec l'aide d'une librairie déjà programmé qui vient avec ton moteur. Cette même librairie aurait des fonctions qui te permettrais de récupérer les pointeurs vers ces fonctions ou même de les lister à partir de l'hôte. Deuxième façon(je ne le recommande pas, car ça dépend du compilateur utilisé et c'est pas très élégant): on exporte directement les fonctions sous une convention de nom précise, ensuite en utilisant les règles de name mangling on prédit le nom de l'événément. Ensuite dans ton éditeur de je ne sais pas quoi tu pourrais simplement appeler gcc ou un autre compilateur, ton éditeur deviendrait donc un frontend. Attention par contre, si tu ne veux pas que tes utilisateurs puissent entrer du code malicieux, je ne recommenderais pas les Dlls, c'est si tu veux maximiser les possibilités et minimiser le temps de développement.
j'peux pas simplement compiler tout mes objects en tant que DLL qui stock tout dans un gros vector, et lorsque j'les fou dans ma map j'exécute le create, pis le step&dra à partir de ma DLL ? Et tout ce que le programme aura a récupérer "dynamiquement " c'est les positions x/y, les hitbox/hitzone & co (tout ce qui entre en intéraction avec le joueur quoi), et encore j'pense que tout ce qui est collisions sera géré par une dll Very Happy

edit : j'ai oublié de spécifier, que y'a aucune nouvelle fonction, le script est juste traduit et foutu dans le step sous gm, on peut appeller des fonctions mais elles sont prédéfinies par le moteur. C'est vraiment que du contrôle de comportement quoi

Je ne sais pas exactement le problème, mais ce que je peux te proposer c'est l'interface C suivante pour une librairie intermédiaire entre ta Dll et ton hôte:
Code:

struct Object;
typedef struct
{
void* Params;
char* Info;
} EventParameters;

typedef  (*EventFunc)(Object* This, Object* Other, EventParameters Params);

typedef enum
{
EVT_CREATE,
EVT_STEP,
EVT_COLLIDE,
EVT_DRAW
} Event;

typedef struct
{
char* ObjectName;
Event EventType;
} EventProperties;

//Host
char LoadObjectLibrary(char* Path);
int GetEventCount();
EventProperties GetEventProperties(int Index);
EventFunc GetEventFuncIndex(int Index);
EventFunc GetEventFunc(EventProperties EventProps);

//Client
char RegisterEvent(EventFunc Func, EventProperties EventProps);
char ClearEvents();
char UnregisterEvent(EventProperties EventProps);
char UnregisterEventByFunc(EventFunc Func);


À toi de la faire correspondre à tes besoins et la changer dans le langage de ton choix.

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 19:45

Merci gnii

Jvais déjà tenter d'incruster des objets dans une DLL et de les appeler sur mon moteur Smile

edit : Par contre j'me suis jamais servi de dLL en C++ ('fin du moins que j'ai fait moi), ça marche comment ? C'est quoi l'équivalent de external_define / external_call en c++ ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
Gab666

Messages : 5339
Localisation : **I move away from the mic to breathe in

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 20:15

Termite a écrit:
Merci gnii

Jvais déjà tenter d'incruster des objets dans une DLL et de les appeler sur mon moteur Smile

edit : Par contre j'me suis jamais servi de dLL en C++ ('fin du moins que j'ai fait moi), ça marche comment ? C'est quoi l'équivalent de external_define / external_call en c++ ?

Il existe deux façon: la première avec un .lib très gentiment généré par ton IDE généralement et qui chargera la Dll ainsi que tous les symboles au démarrage du programme.

L'autre façon: On charge manuellement chacune des fonctions dont on a besoin.
L'API Win32 te permet de faire l'appel de fonctions dans une dll et le chargement. Il suffit d'utiliser les deux fonctions suivantes:
http://msdn.microsoft.com/en-us/library/ms684175%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms683212%28v=vs.85%29.aspx
LoadLibrary retourne un handle vers la Dll qu'on peut passer à GetProcAddress pour obtenir un pointeur vers le symbole qu'on a spécifié en paramètre.

Pour le reste(exportation de fonction, etc.) il y a pas mal d'information sur developpez.com.

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 EmptyDim 24 Avr 2011 - 20:46

Merci ! Very Happy

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Contenu sponsorisé




Compiler fichier externe n C++, possible ? - Page 2 Empty
MessageSujet: Re: Compiler fichier externe n C++, possible ?   Compiler fichier externe n C++, possible ? - Page 2 Empty

Revenir en haut Aller en bas
 
Compiler fichier externe n C++, possible ?
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: