Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
fr.comp.os.ms-windows.programmation est plus approprié
implémentées dans cette librairie et d'instancier des
On ne dit pas "librairie" mais "bibliothèque", ou alors "library" (avec
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
fr.comp.os.ms-windows.programmation est plus approprié
implémentées dans cette librairie et d'instancier des
On ne dit pas "librairie" mais "bibliothèque", ou alors "library" (avec
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
fr.comp.os.ms-windows.programmation est plus approprié
implémentées dans cette librairie et d'instancier des
On ne dit pas "librairie" mais "bibliothèque", ou alors "library" (avec
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Je n'en sais rien : tu trouveras surement une reponse sur
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.
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Je n'en sais rien : tu trouveras surement une reponse sur
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.
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Je n'en sais rien : tu trouveras surement une reponse sur
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.
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Oui.
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 ?
S'ils ne sont pas disponibles, c'est que ce n'est pas prévu pour être
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.
Euh, ton application principale doit quand même connaître les types des
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Oui.
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 ?
S'ils ne sont pas disponibles, c'est que ce n'est pas prévu pour être
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.
Euh, ton application principale doit quand même connaître les types des
Bonjour à tous,
Voici ma question de débutant sous windows...
Il a t-il un moyen de charger une librairie dll après le
chargement de l'application ?
Oui.
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 ?
S'ils ne sont pas disponibles, c'est que ce n'est pas prévu pour être
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.
Euh, ton application principale doit quand même connaître les types des
Voici ma question de débutant sous windows...
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...
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...
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.
Olivier Ravard wrote in message
news:<bodcv8$qpk$...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement
sous les autres systèmes aussi, quand tu veux chercher l'adresse d'un
symbole dans l'objet chargé, il faut donné le nom tel qu'il apparaît
dans la table des symboles, et non tel que tu l'as écrit dans ton
programme. Surtout en C++, à cause de la décoration. Sous Solaris, au
moins, il suffit que je déclare la fonction « extern "C" », et je peux
utiliser le nom tel quel ; je n'ai pas encore essayé sous Windows.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu,
sous Windows, c'est plutôt defini lors de la création de l'objet
dynamique, au moyen des extensions du langage, et peut-être aussi des
options du compilateur et de l'éditeur de liens.
Olivier Ravard <olivier.ravard@novagrid.com> wrote in message
news:<bodcv8$qpk$1@news.univ-rennes1.fr>...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement
sous les autres systèmes aussi, quand tu veux chercher l'adresse d'un
symbole dans l'objet chargé, il faut donné le nom tel qu'il apparaît
dans la table des symboles, et non tel que tu l'as écrit dans ton
programme. Surtout en C++, à cause de la décoration. Sous Solaris, au
moins, il suffit que je déclare la fonction « extern "C" », et je peux
utiliser le nom tel quel ; je n'ai pas encore essayé sous Windows.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu,
sous Windows, c'est plutôt defini lors de la création de l'objet
dynamique, au moyen des extensions du langage, et peut-être aussi des
options du compilateur et de l'éditeur de liens.
Olivier Ravard wrote in message
news:<bodcv8$qpk$...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement
sous les autres systèmes aussi, quand tu veux chercher l'adresse d'un
symbole dans l'objet chargé, il faut donné le nom tel qu'il apparaît
dans la table des symboles, et non tel que tu l'as écrit dans ton
programme. Surtout en C++, à cause de la décoration. Sous Solaris, au
moins, il suffit que je déclare la fonction « extern "C" », et je peux
utiliser le nom tel quel ; je n'ai pas encore essayé sous Windows.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu,
sous Windows, c'est plutôt defini lors de la création de l'objet
dynamique, au moyen des extensions du langage, et peut-être aussi des
options du compilateur et de l'éditeur de liens.
wrote:Olivier Ravard wrote in message
news:<bodcv8$qpk$...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement sous les autres systèmes aussi, quand tu veux chercher
l'adresse d'un symbole dans l'objet chargé, il faut donné le nom tel
qu'il apparaît dans la table des symboles, et non tel que tu l'as
écrit dans ton programme. Surtout en C++, à cause de la décoration.
Sous Solaris, au moins, il suffit que je déclare la fonction «
extern "C" », et je peux utiliser le nom tel quel ; je n'ai pas
encore essayé sous Windows.
C'est bien le cas.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu, sous Windows, c'est plutôt defini lors de la création de
l'objet dynamique, au moyen des extensions du langage, et peut-être
aussi des options du compilateur et de l'éditeur de liens.
Effectivement, if faut explicitement exporter tous les symboles qui
peuvent être utilisés dans la DLL.
A noter que .NET introduit des nouveaux concepts de DLL avec des
possibilités accrues (fonctions d'introspection, export "propre" de
classe, "déclaration" incluse dans la DLL...), dont je ne parle pas
ici.
Une autre différence que je trouve importante, c'est que sous windows,
une DLL ne peut pas appeler (ou du moins pas simplement) une fonction
définie dans le programme de base (je crois que sur certains unix,
c'est possible).
kanze@gabi-soft.fr wrote:
Olivier Ravard <olivier.ravard@novagrid.com> wrote in message
news:<bodcv8$qpk$1@news.univ-rennes1.fr>...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement sous les autres systèmes aussi, quand tu veux chercher
l'adresse d'un symbole dans l'objet chargé, il faut donné le nom tel
qu'il apparaît dans la table des symboles, et non tel que tu l'as
écrit dans ton programme. Surtout en C++, à cause de la décoration.
Sous Solaris, au moins, il suffit que je déclare la fonction «
extern "C" », et je peux utiliser le nom tel quel ; je n'ai pas
encore essayé sous Windows.
C'est bien le cas.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu, sous Windows, c'est plutôt defini lors de la création de
l'objet dynamique, au moyen des extensions du langage, et peut-être
aussi des options du compilateur et de l'éditeur de liens.
Effectivement, if faut explicitement exporter tous les symboles qui
peuvent être utilisés dans la DLL.
A noter que .NET introduit des nouveaux concepts de DLL avec des
possibilités accrues (fonctions d'introspection, export "propre" de
classe, "déclaration" incluse dans la DLL...), dont je ne parle pas
ici.
Une autre différence que je trouve importante, c'est que sous windows,
une DLL ne peut pas appeler (ou du moins pas simplement) une fonction
définie dans le programme de base (je crois que sur certains unix,
c'est possible).
wrote:Olivier Ravard wrote in message
news:<bodcv8$qpk$...
Une chose à laquelle il faut faire attention. Sous Unix, et
probablement sous les autres systèmes aussi, quand tu veux chercher
l'adresse d'un symbole dans l'objet chargé, il faut donné le nom tel
qu'il apparaît dans la table des symboles, et non tel que tu l'as
écrit dans ton programme. Surtout en C++, à cause de la décoration.
Sous Solaris, au moins, il suffit que je déclare la fonction «
extern "C" », et je peux utiliser le nom tel quel ; je n'ai pas
encore essayé sous Windows.
C'est bien le cas.
Mais je crois ici qu'on tombe sur des différences entre les deux
systèmes. Sous Unix, la visibilité des symboles dans l'objet linké
dynamiquement dépend des paramètres de dlopen ; du peu que j'ai
entendu, sous Windows, c'est plutôt defini lors de la création de
l'objet dynamique, au moyen des extensions du langage, et peut-être
aussi des options du compilateur et de l'éditeur de liens.
Effectivement, if faut explicitement exporter tous les symboles qui
peuvent être utilisés dans la DLL.
A noter que .NET introduit des nouveaux concepts de DLL avec des
possibilités accrues (fonctions d'introspection, export "propre" de
classe, "déclaration" incluse dans la DLL...), dont je ne parle pas
ici.
Une autre différence que je trouve importante, c'est que sous windows,
une DLL ne peut pas appeler (ou du moins pas simplement) une fonction
définie dans le programme de base (je crois que sur certains unix,
c'est possible).
Une autre différence que je trouve importante, c'est que sous
windows, une DLL ne peut pas appeler (ou du moins pas simplement)
une fonction définie dans le programme de base (je crois que sur
certains unix, c'est possible).
Alors, comment fait-il pour malloc ? Est-ce qu'il y a une copie de
malloc par DLL ? Et si ça vaut pour les fonctions, qu'est-ce qui se
passe pour les symboles -- malloc a besoin des variables statiques, et
s'il y en a plusieurs copies d'elles, ça ne marche pas.
Une autre différence que je trouve importante, c'est que sous
windows, une DLL ne peut pas appeler (ou du moins pas simplement)
une fonction définie dans le programme de base (je crois que sur
certains unix, c'est possible).
Alors, comment fait-il pour malloc ? Est-ce qu'il y a une copie de
malloc par DLL ? Et si ça vaut pour les fonctions, qu'est-ce qui se
passe pour les symboles -- malloc a besoin des variables statiques, et
s'il y en a plusieurs copies d'elles, ça ne marche pas.
Une autre différence que je trouve importante, c'est que sous
windows, une DLL ne peut pas appeler (ou du moins pas simplement)
une fonction définie dans le programme de base (je crois que sur
certains unix, c'est possible).
Alors, comment fait-il pour malloc ? Est-ce qu'il y a une copie de
malloc par DLL ? Et si ça vaut pour les fonctions, qu'est-ce qui se
passe pour les symboles -- malloc a besoin des variables statiques, et
s'il y en a plusieurs copies d'elles, ça ne marche pas.