Bonjour,
j'ai un problème avec la fonction GetProcAddress. J'utilisais un programme sous windows qui tournait très bien, code ici :
for ( i = 0; i < FONCTIONS_COUNT; i++)
{
*(GalssEntries[i].pFunc) = (SYSFARPROC)GetProcAddress( (HINSTANCE)GalsshInst,
LPCSTR(GalssEntries[i].szFunc));
if ( *(GalssEntries[i].pFunc) == NULL)
{
/* %v1.13 04/07/1997 DRE : seulement mode debug */
#ifdef _DEBUG
sprintf( szTool, "%s: Point d'entrée %s.%s non trouvé",
GalssClassName,
GalssDllName,
GalssEntries[i].szFunc);
DisplayMessage( szTool, GALSSSRV_VERSION);
#endif
Toutefois , j'ai voulu porter ce code pour pocket pc et donc en environnement unicode donc j'ai du faire une modification au niveau du LPCSTR vers LPCWSTR :
*(GalssEntries[i].pFunc) = (SYSFARPROC)GetProcAddress( (HINSTANCE)GalsshInst,
LPCWSTR(GalssEntries[i].szFunc));
Le problème c'est que maintenant cela me renvoie nul et donc Point d'entrée OuvrirSession ( fct d'une DLL ) non trouvé.
GalssEntries[i].szFunc possède différentes valeurs correspondantes à une fonction :
sGalssEntry GalssEntries[FONCTIONS_COUNT]={
{ (SYSFARPROC *)&pOuvrirSession , "OuvrirSession"},
{ (SYSFARPROC *)&pFermerSession , "FermerSession"},
{ (SYSFARPROC *)&pDebutExclusivite, "DebutExclusivite"},
{ (SYSFARPROC *)&pFinExclusivite , "FinExclusivite"},
{ (SYSFARPROC *)&pEcritContexte , "EcritContexte"},
{ (SYSFARPROC *)&pLitContexte , "LitContexte"},
{ (SYSFARPROC *)&pusDump , "usDump"},
{ (SYSFARPROC *)&pEchange , "Echange"},
/* %v1.06 DRE 28/02/1997 : nouvelle API */
{ (SYSFARPROC *)&pLireVersion , "LireVersion"}
/* %v1.06 DRE 28/02/1997 : Fin */
};
merci pour toute aide