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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grammars=static_cast<GrammarDef*>GetProcAddress(dll, grammarsSymbolName);
me genere une erreur de compilation :
Citation 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 !