Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation des declaration dllexport et dllimport

2 réponses
Avatar
torri
J'aimerais avoir des precisions sur l'utilisation de dllexport,
dllimport, et leur non utilisation pour la creation et l'utilisation
d'une bibliotheque

J'utilise gcc et non vc++ et je cree une dll et une bibliotheque statique
(ou import lib)

Pour l'instant, concernant les methodes exportees, je fais ceci:

1) si je suis en train de creer la bibliotheque :

a) si je construit la dll, je declare les methodes exportees avec
dllexport

b) si je construit la bibliotheque statique, je ne mets rien

2) si je suis en train d'utiliser la bibliotheque, je declare les metodes
avec dllimport.

Avec le code :

* le cas 1) est gere par une macro EFL_EVAS_BUILD, qui n'est definie que
si je suis effectivement en train de creer la dll ou la lib statique

* je sais que je suis en train de creer la dll grace a la macro
DLL_EXPORT

Voici le code

#ifdef _WIN32
# ifdef EFL_EVAS_BUILD
# ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI
# endif /* ! DLL_EXPORT */
# else
# define EAPI __declspec(dllimport)
# endif /* ! EFL_EVAS_BUILD */
#else

et donc je declare les methodes ainsi:

EAPI void f();

Question: est-ce que j'ai bon, ou bien me plante-je completement ?

merci

2 réponses

Avatar
selys
torri wrote:

Voici le code

#ifdef _WIN32
# ifdef EFL_EVAS_BUILD
# ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI
# endif /* ! DLL_EXPORT */
# else
# define EAPI __declspec(dllimport)
# endif /* ! EFL_EVAS_BUILD */
#else

et donc je declare les methodes ainsi:

EAPI void f();

Question: est-ce que j'ai bon, ou bien me plante-je completement ?



Oui, c'est la même chose avec VS, avec les fichiers .DEF également :

http://msdn.microsoft.com/en-us/library/aa271769(VS.60).aspx
http://msdn.microsoft.com/en-us/library/aa234651(VS.60).aspx

Le wizard de VS génère la macro à la suite de :
"The following ifdef block is the standard way of creating macros"
comme :
http://www.koders.com/c/fidD5E06972CEBF24954F1DAAED8BF86D401583664E.aspx?s=crc#L890
Avatar
Torri
Le Sat, 28 Jun 2008 18:18:07 +0200, selys a écrit :


Oui, c'est la même chose avec VS, avec les fichiers .DEF également :

http://msdn.microsoft.com/en-us/library/aa271769(VS.60).aspx
http://msdn.microsoft.com/en-us/library/aa234651(VS.60).aspx

Le wizard de VS génère la macro à la suite de : "The following ifdef
block is the standard way of creating macros" comme :
http://www.koders.com/c/


fidD5E06972CEBF24954F1DAAED8BF86D401583664E.aspx?s=crc#L890

merci pour les liens et la confirmation :)