OVH Cloud OVH Cloud

acceder aux fonctions de l'application depuis des dlls

5 réponses
Avatar
yomgui
Salut,

J'essaie d'avoir un ensemble de fonctions (et de variables)
accessibles depuis differentes dlls et aussi depuis le programme
principal

Pour le moment, je construit une static lib avec ces fonctions
mais la meme lib est chargé plusieurs fois (dans l'application
principale et dans les dll)

Pour eviter ca, je pourrai construire une dll (plutot qu'une static
lib).
Suis-je certain que la dll ne sera pas chargée plusieurs fois ?

N'y a t'il pas une meilleure solution? exporter les fonctions (et
variables)
depuis l'application principale, de sorte qu'elle soit directement
accessible
depuis les dll ?
Quelqu'un sait-il comment faire ca ?

merci

yomgui

5 réponses

Avatar
Vincent Burel
"yomgui" wrote in message
news:
Salut,

J'essaie d'avoir un ensemble de fonctions (et de variables)
accessibles depuis differentes dlls et aussi depuis le programme
principal

Pour le moment, je construit une static lib avec ces fonctions
mais la meme lib est chargé plusieurs fois (dans l'application
principale et dans les dll)

Pour eviter ca, je pourrai construire une dll (plutot qu'une static
lib).
Suis-je certain que la dll ne sera pas chargée plusieurs fois ?

N'y a t'il pas une meilleure solution? exporter les fonctions (et
variables)
depuis l'application principale, de sorte qu'elle soit directement
accessible
depuis les dll ?
Quelqu'un sait-il comment faire ca ?



toutes les DLL et l'application sont dans le même espace d'adressage , donc
tout le monde (tous les modules d'un logiciels, APP, DLL, LIB) peut fournir
des pointeur de fonctions à tout le monde. Suffit de se mettre d'accord et
de mettre en place une fonction qui permet de faire communiquer cela.

VB
Avatar
yomgui
> toutes les DLL et l'application sont dans le même espace d'adressage , donc
tout le monde (tous les modules d'un logiciels, APP, DLL, LIB) peut fournir
des pointeur de fonctions à tout le monde. Suffit de se mettre d'accord et
de mettre en place une fonction qui permet de faire communiquer cela.



merci de votre reponse, je sais que cela est possible.
La question est :
concretement, comment je fais ? quels lignes je tape ?
quel dllimport ou dllexport je dois ajouter dans mon code ?

merci

yomgui
Avatar
Vincent Burel
"yomgui" wrote in message
news:
> toutes les DLL et l'application sont dans le même espace d'adressage ,


donc
> tout le monde (tous les modules d'un logiciels, APP, DLL, LIB) peut


fournir
> des pointeur de fonctions à tout le monde. Suffit de se mettre d'accord


et
> de mettre en place une fonction qui permet de faire communiquer cela.

merci de votre reponse, je sais que cela est possible.
La question est :
concretement, comment je fais ? quels lignes je tape ?
quel dllimport ou dllexport je dois ajouter dans mon code ?



bon concretement ca dépend de votre organisation.
et de ce que vous voulez faire. Donc donner un exemple concis, concret et
réprésentatif , soyez précis, et on essayera de vous répondre concrètement.

VB
Avatar
yomgui
merci,

dans mon application, j'ai mis ca dans lala.h

#ifdef MY_DLL_EXPORT
#define MY_DLL_PORT __declspec(dllexport)
#else
#define MY_DLL_PORT extern __declspec(dllimport)
#endif
namespace charutilities
{
MY_DLL_PORT char * insureExtension(char * const & ao_dest_name, char const *
const & a_source_name);
}

dans mon application, dans lala.cpp
lala.h est le premier include non systeme

namespace charutilities
{
char * insureExtension(char * const & ao_dest_name, char const * const &
a_source_name)
{ ......}
}

MY_DLL_EXPORT est defini pour l'application
ca compile sans probleme

dans la dll MY_DLL_EXPORT n'est pas defini
lala.h est un des includes et insureExtension() est appelé dans lili.cpp

mais j'ai l'erreur suivante:
lili.obj : error LNK2001: unresolved external symbol "__declspec(dllimport)
char * __cdecl charutilities::insureExtension(char * const &,char const * const
&,char const * const &)"
(__imp_?@@)

merci

yomgui
Avatar
yomgui
j'ai réglé le probleme,
je n'incluais pas la bonne lib de l'exe semble-t-il.

ca marche a present.

merci quoi qu'il en soit

yomgui