Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Y a t-il un moyen en C++ de connaitre la liste des classes
implémentées dans cette librairie et d'instancier des
objets décrits par ces classes sachant que les prototypes
des fonctions ne sont pas disponibles lors de la compilation
de l'application ?
Si je ne suis pas clair, voici mon objectif :
Je souhaite qu'un utilisateur de mon application puisse ajouter
un module (sous forme dll) pour que l'application en question
puisse créer de noveaux objets sans recompilation.
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif : Je souhaite qu'un utilisateur de mon application puisse ajouter un module (sous forme dll) pour que l'application en question puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs comme plugin. Toute DLL plugin devra comporter une fonction exportée 'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton programme un header de la classe Plugin qui déclare les fonctions que peut offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent grace au plugin.h que tu fournis avec ton programme. ).
En esperant avoir été clair.
Loic.
"Olivier Ravard" a écrit
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes
implémentées dans cette librairie et d'instancier des
objets décrits par ces classes sachant que les prototypes
des fonctions ne sont pas disponibles lors de la compilation
de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif :
Je souhaite qu'un utilisateur de mon application puisse ajouter
un module (sous forme dll) pour que l'application en question
puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs
comme plugin. Toute DLL plugin devra comporter une fonction exportée
'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton
programme un header de la classe Plugin qui déclare les fonctions que peut
offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les
methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent
grace au plugin.h que tu fournis avec ton programme. ).
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif : Je souhaite qu'un utilisateur de mon application puisse ajouter un module (sous forme dll) pour que l'application en question puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs comme plugin. Toute DLL plugin devra comporter une fonction exportée 'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton programme un header de la classe Plugin qui déclare les fonctions que peut offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent grace au plugin.h que tu fournis avec ton programme. ).
En esperant avoir été clair.
Loic.
Fabien SK
lo wrote:
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
On peut le faire en faisant des objets COM implémentant "IDispatch", mais il faudrait savoir ce que veux faire Olivier pour savoir si c'est adapté à son problème. Je ne vois pas comment utiliser des objets sans connaitre leur utilisation à l'avance (à moins d'avoir un langage de script pour le faire).
lo wrote:
Y a t-il un moyen en C++ de connaitre la liste des classes
implémentées dans cette librairie et d'instancier des
objets décrits par ces classes sachant que les prototypes
des fonctions ne sont pas disponibles lors de la compilation
de l'application ?
Non.
On peut le faire en faisant des objets COM implémentant "IDispatch",
mais il faudrait savoir ce que veux faire Olivier pour savoir si c'est
adapté à son problème. Je ne vois pas comment utiliser des objets sans
connaitre leur utilisation à l'avance (à moins d'avoir un langage de
script pour le faire).
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
On peut le faire en faisant des objets COM implémentant "IDispatch", mais il faudrait savoir ce que veux faire Olivier pour savoir si c'est adapté à son problème. Je ne vois pas comment utiliser des objets sans connaitre leur utilisation à l'avance (à moins d'avoir un langage de script pour le faire).
Olivier Ravard
Merci pour ces réponses. Elles répondent à mon problème. LoadLibrary, je ne connaissais pas, mais le principe des Plugins, j'aurais dû trouver ça tout seul... arg...
Oliver
lo wrote:
"Olivier Ravard" a écrit
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif : Je souhaite qu'un utilisateur de mon application puisse ajouter un module (sous forme dll) pour que l'application en question puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs comme plugin. Toute DLL plugin devra comporter une fonction exportée 'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton programme un header de la classe Plugin qui déclare les fonctions que peut offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent grace au plugin.h que tu fournis avec ton programme. ).
En esperant avoir été clair.
Loic.
Merci pour ces réponses. Elles répondent à mon problème.
LoadLibrary, je ne connaissais pas, mais le principe des
Plugins, j'aurais dû trouver ça tout seul... arg...
Oliver
lo wrote:
"Olivier Ravard" a écrit
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes
implémentées dans cette librairie et d'instancier des
objets décrits par ces classes sachant que les prototypes
des fonctions ne sont pas disponibles lors de la compilation
de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif :
Je souhaite qu'un utilisateur de mon application puisse ajouter
un module (sous forme dll) pour que l'application en question
puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs
comme plugin. Toute DLL plugin devra comporter une fonction exportée
'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton
programme un header de la classe Plugin qui déclare les fonctions que peut
offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les
methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent
grace au plugin.h que tu fournis avec ton programme. ).
Merci pour ces réponses. Elles répondent à mon problème. LoadLibrary, je ne connaissais pas, mais le principe des Plugins, j'aurais dû trouver ça tout seul... arg...
Oliver
lo wrote:
"Olivier Ravard" a écrit
Voici ma question de débutant sous windows (visual C++)...
Il a t-il un moyen de charger une librairie dll après le chargement de l'application ?
Oui : LoadLibrary. ( voir aussi GetProcAddress )
Y a t-il un moyen en C++ de connaitre la liste des classes implémentées dans cette librairie et d'instancier des objets décrits par ces classes sachant que les prototypes des fonctions ne sont pas disponibles lors de la compilation de l'application ?
Non.
Si je ne suis pas clair, voici mon objectif : Je souhaite qu'un utilisateur de mon application puisse ajouter un module (sous forme dll) pour que l'application en question puisse créer de noveaux objets sans recompilation.
Une solution : Tu peux te debrouiller pour que ton programme accepte des DLLs comme plugin. Toute DLL plugin devra comporter une fonction exportée 'GetPlugin' qui retourne une instance d'un objet Plugin. Tu fournis avec ton programme un header de la classe Plugin qui déclare les fonctions que peut offrir un Plugin. Les plugins utilisateurs n'auront qu'à surcharger les methodes de la classe de laquelle ils héritent ( celles qu'ils connaissent grace au plugin.h que tu fournis avec ton programme. ).
En esperant avoir été clair.
Loic.
lo
"Olivier Ravard" a écrit
Merci pour ces réponses. Elles répondent à mon problème. LoadLibrary, je ne connaissais pas, mais le principe des Plugins, j'aurais dû trouver ça tout seul... arg...
Me suis dit ca aussi avant qu'on me l'explique ...
Loic.
"Olivier Ravard" a écrit
Merci pour ces réponses. Elles répondent à mon problème.
LoadLibrary, je ne connaissais pas, mais le principe des
Plugins, j'aurais dû trouver ça tout seul... arg...
Me suis dit ca aussi avant qu'on me l'explique ...
Merci pour ces réponses. Elles répondent à mon problème. LoadLibrary, je ne connaissais pas, mais le principe des Plugins, j'aurais dû trouver ça tout seul... arg...
Me suis dit ca aussi avant qu'on me l'explique ...
Loic.
Jean-Marc Molina
Je m'étais moi-même posé la question. J'aurai pu tomber sur ce newsgroup mais à l'époque je ne savais même pas ce qu'était usenet ou encore internet :). J'ai trouvé mes réponses dans l'excellentissime ouvrage de Jeffrey Richter : Programming Applications for Microsoft Windows. On trouve aussi pas mal d'info sur codeproject.com, section DLL. TU devrais aussi mettre la main sur le SDK de WinAmp, le système utilisé est le même que celui qu'on te conseille. En général c'est une bonne idée de jeter un coup d'oeil aux sources d'une application qui t'intéresse, dans mon cas j'aimais beaucoup les plugins WinAmp et j'ai foulu faire pareil. Modularité quand tu nous tiens :).
Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins" ^^. Comme certains disent librairies (de l'anglais libraries) au lieu de dire bibliothèques (dans le cas de .dll/lib).
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Je m'étais moi-même posé la question. J'aurai pu tomber sur ce newsgroup
mais à l'époque je ne savais même pas ce qu'était usenet ou encore internet
:). J'ai trouvé mes réponses dans l'excellentissime ouvrage de Jeffrey
Richter : Programming Applications for Microsoft Windows. On trouve aussi
pas mal d'info sur codeproject.com, section DLL. TU devrais aussi mettre la
main sur le SDK de WinAmp, le système utilisé est le même que celui qu'on te
conseille. En général c'est une bonne idée de jeter un coup d'oeil aux
sources d'une application qui t'intéresse, dans mon cas j'aimais beaucoup
les plugins WinAmp et j'ai foulu faire pareil. Modularité quand tu nous
tiens :).
Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins" ^^.
Comme certains disent librairies (de l'anglais libraries) au lieu de dire
bibliothèques (dans le cas de .dll/lib).
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Je m'étais moi-même posé la question. J'aurai pu tomber sur ce newsgroup mais à l'époque je ne savais même pas ce qu'était usenet ou encore internet :). J'ai trouvé mes réponses dans l'excellentissime ouvrage de Jeffrey Richter : Programming Applications for Microsoft Windows. On trouve aussi pas mal d'info sur codeproject.com, section DLL. TU devrais aussi mettre la main sur le SDK de WinAmp, le système utilisé est le même que celui qu'on te conseille. En général c'est une bonne idée de jeter un coup d'oeil aux sources d'une application qui t'intéresse, dans mon cas j'aimais beaucoup les plugins WinAmp et j'ai foulu faire pareil. Modularité quand tu nous tiens :).
Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins" ^^. Comme certains disent librairies (de l'anglais libraries) au lieu de dire bibliothèques (dans le cas de .dll/lib).
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Mickael Pointier
> Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins" ^^. Comme certains disent librairies (de l'anglais libraries) au lieu de dire bibliothèques (dans le cas de .dll/lib).
Quitte à être pédant, j'aime autant que l'on dise "extension" plutôt que "greffon".
Donc pour résumer il n'y a pas de "on dit xxxx en français", mais plutôt "certains préfèrent dire xxxx en français".
La francisation à tout va, si c'est pour arriver à des atrocitées telles que cédérom, autant se pendre.
Mike
> Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins"
^^. Comme certains disent librairies (de l'anglais libraries) au lieu
de dire bibliothèques (dans le cas de .dll/lib).
Quitte à être pédant, j'aime autant que l'on dise "extension" plutôt que
"greffon".
Donc pour résumer il n'y a pas de "on dit xxxx en français", mais plutôt
"certains préfèrent dire xxxx en français".
La francisation à tout va, si c'est pour arriver à des atrocitées telles
que cédérom, autant se pendre.
> Et n'oubliez pas qu'on dit "greffons" en français, et pas "plugins" ^^. Comme certains disent librairies (de l'anglais libraries) au lieu de dire bibliothèques (dans le cas de .dll/lib).
Quitte à être pédant, j'aime autant que l'on dise "extension" plutôt que "greffon".
Donc pour résumer il n'y a pas de "on dit xxxx en français", mais plutôt "certains préfèrent dire xxxx en français".
La francisation à tout va, si c'est pour arriver à des atrocitées telles que cédérom, autant se pendre.
Mike
PurL
> La francisation à tout va, si c'est pour arriver à des atrocitées telles que cédérom, autant se pendre.
Ouai ! ils se sont arrêtés là car c'est en voulant franciser cédéairdoublevé qu'ils sont compris qu'ils avaient à faire à un sigle :))
PurL - de bonne humeur
> La francisation à tout va, si c'est pour arriver à des atrocitées
telles que cédérom, autant se pendre.
Ouai ! ils se sont arrêtés là car c'est en voulant franciser cédéairdoublevé
qu'ils sont compris qu'ils avaient à faire à un sigle :))
> La francisation à tout va, si c'est pour arriver à des atrocitées telles que cédérom, autant se pendre.
Ouai ! ils se sont arrêtés là car c'est en voulant franciser cédéairdoublevé qu'ils sont compris qu'ils avaient à faire à un sigle :))
PurL - de bonne humeur
Jean-Marc Molina
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une binette (smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il est donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une binette
(smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il est
donc normal que de nouveaux mots soient créés chaque jour : cédérom
(CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou
spam), binette (smiley)...
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une binette (smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il est donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Thierry
Bonjour,
Jean-Marc Molina a écrit :
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une binette (smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il est donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
Je pense que c'est l'usage qui doit consacrer un mot, pas que ce soit un parterre de croulants à 100 lieux de la réalité informatique qui impose quelque néologisme affreux et je me reserve le choix d'utiliser ceux que j'aime bien (butineur) et d'eviter ceux que j'aime pas (cédérom).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Bonjour,
Jean-Marc Molina a écrit :
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une
binette (smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante,
il est donc normal que de nouveaux mots soient créés chaque jour :
cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel
pourri ou spam), binette (smiley)...
Je pense que c'est l'usage qui doit consacrer un mot, pas que ce soit un
parterre de croulants à 100 lieux de la réalité informatique qui impose
quelque néologisme affreux et je me reserve le choix d'utiliser ceux que
j'aime bien (butineur) et d'eviter ceux que j'aime pas (cédérom).
--
"MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une binette (smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il est donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
Je pense que c'est l'usage qui doit consacrer un mot, pas que ce soit un parterre de croulants à 100 lieux de la réalité informatique qui impose quelque néologisme affreux et je me reserve le choix d'utiliser ceux que j'aime bien (butineur) et d'eviter ceux que j'aime pas (cédérom).
-- "MOI JE VEUX JOUER DE L'HELICON (PON PON PON PON)"
Johann Dantant
"Jean-Marc Molina" a écrit dans le message de news:boflm9$l92$
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une
binette
(smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il
est
donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
N'oubliez pas qu'une langue vivante c'est une langue dans laquelle les mots sont créés par ceux qui vont les utiliser, et non pas par ceux qui voudraient bien qu'on les utilise... C'est tout différents.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
"Jean-Marc Molina" <goa_pasdepourriel_@ifrance.com> a écrit dans le message
de news:boflm9$l92$1@news-reader1.wanadoo.fr...
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une
binette
(smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il
est
donc normal que de nouveaux mots soient créés chaque jour : cédérom
(CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou
spam), binette (smiley)...
N'oubliez pas qu'une langue vivante c'est une langue dans laquelle les mots
sont créés par ceux qui vont les utiliser, et non pas par ceux qui
voudraient bien qu'on les utilise... C'est tout différents.
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
"Jean-Marc Molina" a écrit dans le message de news:boflm9$l92$
Éhéh je ne cherchais pas à être perdant, j'ai oublié de joindre une
binette
(smiley) à mon message ^^'
N'oubliez surtout pas que la langue française est une langue vivante, il
est
donc normal que de nouveaux mots soient créés chaque jour : cédérom (CD-ROM), courriel (courrier électronique), pourriel (courriel pourri ou spam), binette (smiley)...
N'oubliez pas qu'une langue vivante c'est une langue dans laquelle les mots sont créés par ceux qui vont les utiliser, et non pas par ceux qui voudraient bien qu'on les utilise... C'est tout différents.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)