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 : 
	
	| 12
 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 : 
	
	| 12
 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