Bonjour !
Voila je dois ecrire du C++ multiplateformes (aie, ca commence mal) qui recupere des symboles depuis une DLL .
Dans ma DLL, j'ai le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #ifdef WIN32_
#define MY_EXPORT __declspec (dllexport )
#else
#define MY_EXPORT
#endif
#ifdef __cplusplus
extern "C" {
#endif
MY_EXPORT GrammarDef grammars = {
bla bla ...
}; |
et dans l'appelant :
1 2 3 4 5
| #ifdef WIN32_
grammars=static_cast<GrammarDef*>GetProcAddress(dll, grammarsSymbolName);
#else
grammars=static_cast<GrammarDef*>(dlsym(dll, grammarsSymbolName));
#endif |
Et le probleme est que ce code fonctionne (il compile et s'execute comme il faut) a merveille sous les unix, linux etc... mais pas sous windows .
En effet la ligne :
grammars=static_cast<GrammarDef*>GetProcAddress(dll, grammarsSymbolName);
me genere une erreur de compilation :

Envoyé par
Visual C++.net
'static_cast' : cannot convert from 'FARPROC' to 'GrammarDef *'
Est ce que quelqu'un sait ou est ce que j'ai faute ?
Apres pas mal de recherche sur google, je n'ai toruve que des exemples ou on utilise GetProcAddress pour avoir un pointeur sur fonction et jammais pour avoir un pointeur sur une variable
Merci d'avance !
Partager