Je crée une DLL C++ à importer dans vb.net.Où puis-je créer des directives de préprocesseur pour une exportation dll?
J'ai trouvé que la meilleure façon d'organiser les importations et les exportations dans le fichier d'en-tête de la dll, est quelque chose du type:
#ifndef MY_DLL_EXPORTS
#define MY_DLL_EXPORT __declspec(dllexport)
#else
#define MY_DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
MY_DLL_EXPORT BOOL my_function(uint32_t x);
#ifdef __cplusplus
}
#endif
Ma question est, où sont les __cplusplus et MY_DLL_EXPORTS supposé à définir ?
Je ne l'ai pas fait auparavant et je n'arrive pas à trouver une place dans le code pour cela. J'ai lu quelque chose à mettre ces définitions dans le
Project Properties -> Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
Est-ce que je les mets dans les propriétés du projet de la DLL? et si je le fais, en utilisant cette DLL, seront-ils toujours définis de sorte que l'instruction if ira toujours au dllimport
?
Est-ce que __cplusplus
est déjà défini ou dois-je le définir?
ne serait pas le fait que je définis dans le code, ou sur la ligne de commande, rendre le #ifdef inutile - puisque la directive sera toujours définie? – Thalia
J'ai finalement compris comment cela fonctionne, la directive du préprocesseur n'est pas définie du tout puisque j'utilise ce code de dot net. Il serait cependant défini dans un projet C++ appelant. – Thalia
@Thalia, vous l'utilisez comme un commutateur pour contrôler votre code sans le changer manuellement. Un autre exemple est la constante 'DEBUG'. Vous pouvez pepper votre code avec des instructions de débogage puis les ignorer avec un seul commutateur '# define', en ligne de commande, ou en passant de Debug à Release. – Adam