Ainsi, le moyen de définir les exportations / importations pour une DLL est le suivant:
#ifdef DLL_CONFIG
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
#else
#define MY_API // What goes here?
#endif
class MY_API MyClass {
...
};
3 Réponses :
rien.
laissez-le comme Vous pouvez ajouter de nouvelles configurations de construction, telles que DEBUG-DLL et Libération - DLL qui imite les autres sauf qu'ils Pour cloner une configuration, accédez au gestionnaire de configuration (comme la liste déroulante de la zone de liste de débogage / publication) , puis sous «Configuration de la solution active», sélectionnez Nouveau. Vous pouvez désormais nommer "Débogou - dll" et définir les paramètres de copie code> sur Pour ce faire, accédez à Propriétés Propriétés-> Propriétés de la configuration-> C / C ++ -> Préprocesseur et type comme HAFFAX a déclaré , utilisez des noms spécifiques au projet. Je recommanderais quelque chose comme: p> maintenant des utilisateurs de votre DLL juste #define my_api code> et toutes les instances de my_api disparaîtront simplement. p> #define dll_config code>. P> Débogou code> et maintenant qui reste à faire est de définir dll_config code>. P > DLL_Config code> là-bas. Vous verrez également que c'est là que des choses comme ndebug code> et win32 code> sont définies. P> #define theproject_use_dll code> s'ils utilisent la version DLL, tout comme votre "- DLL "Les configurations ont. P> p>
Définissez simplement mon_api comme vide. Comme ceci: en cas de liaison statique, aucun DeclSpec n'est nécessaire. P> Les utilisateurs de votre bibliothèque devront définir EDIT: Bien sûr, vous ne devez pas utiliser les noms dll_config code> s'ils veulent Pour l'utiliser comme DLL ou ne pas la définir s'ils veulent l'utiliser comme une bibliothèque statique.
Il n'y aura pas de problèmes comme cela. Ce type de configuration est effectué dans de nombreuses bibliothèques. P> my_exports code> et dll_config code> comme tel. Utilisez des préfixes spécifiques au projet pour toutes vos macros, de sorte qu'il n'y a pas de noms de noms. P> p>
Ne rien faire. Aucune convention d'appel spécial n'est nécessaire pour relier une bibliothèque statique. La seule chose que vous devez faire est de vous assurer que le lien de liaison avec votre.Lib. P>