Si tu veux les appeler en mode ordinaire par nom tu enleves NONAME.
Change aussi "ServScra" par un nom a toi.
EXPORTS
IDN_OpenComm @1
IDN_CloseComm @2
BruNews, ciao...
-------------------------------
Réponse au message :
-------------------------------
>
>
4ndr&@lphu$>
> je veux bien mais j'aimerais bien savoir comment je peux obtenir le résultats d'un truc si je ne peux pas le faire ???
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > MAKELPARAM est invalide dans un def. Mets direct le resultat.
> > MAKELPARAM est une macro pour le compilo, pas pour le linker.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > >
> > >
4ndr&@lphu$> > >
> > >
> > > maintenat c'est ok pour mes fonctions, mais j'ai un probleme d'exportation dans le fichier def (j'ai pas mis grand chose encore)
> > > voila mon prog:
> > >
> > > mon fichier '.h':
> > > typedef int (*PIDN_OPENCOMM) (IDN_DRVOPEN *p_open);
> > > typedef int (*PIDN_CLOSECOMM) (int ixdrv);
> > >
> > > PIDN_OPENCOMM pIDN_OpenComm;
> > > PIDN_CLOSECOMM pIDN_CloseComm;
> > > // ici y a pas de pb
> > >
> > > mon fichier '.cpp':
> > > // load librery
> > > hDll = LoadLibrary("idndll.dll");
> > >
> > > // get address of function
> > > pIDN_OpenComm = (PIDN_OPENCOMM)GetProcAddress(hDll,(LPCSTR)MAKELPARAM(1,0));
> > >
> > > pIDN_CloseComm = (PIDN_CLOSECOMM)GetProcAddress(hDll,(LPCSTR)MAKELPARAM(2,0));
> > > //pas de pb ici non plus
> > >
> > > mon fichier '.def':
> > > LIBRARY "ServScra"
> > > DESCRIPTION 'ServScra Windows Dynamic Link Library'
> > >
> > > EXPORTS
> > > IDN_OpenComm @MAKELPARAM(1,0) NONAME
> > > IDN_CloseComm @MAKELPARAM(2,0) NONAME
> > > //c'est là que ca déconne...(il me sort:.\idndll.def : fatal error LNK1119: invalid ordinal number "MAKELPARAM(1,0)") ! j'ai fait comme toi sauf que toi c'était un peu plus simple, moi j'ai voulu bricoler un peu...
> > > (attention, les MAKELPARAM(...) du fichier '.cpp' est la seule infos que j'ai concernant les numéros ordinaux de mes fonctions ds ma dll)
> > > j'attends ton aide avec impatience...
> > > et merci d'avance !
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Et tu as exactement repris la meme syntaxe que dans mon exemple ? Je n'ai jamais rencontre de prob en procedant ainsi. Verifie bien les declarations.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > >
> > > > >
4ndr&@lphu$> > > > >
> > > > > c'est ok pour le fichier def mais maintenant on retombe qd meme sur mon premier probleme:
> > > > > à la ligne mon_pointeur_sur_fonction=GetProcAdress(hDll,numéro); , le compilateur me balance une erreur left operand must be l-value , or je ne voit pas ce qui peut le mieux pointé un espace mémoire à part un pointeur ???
> > > > > (prototype de ma fonction-pointeur: int (*mon_pointeur_sur_fonction)(mes_parametres); )
> > > > > Si tu ne sais j'en déduirai que mon compilateur a vraiment une dent contre moi...???
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Quand tu fais une dll tu as d'autre moyen d'exporter des fonctions. Entre autre en faisant un fichier nomdll.def a incorporer dans le projet. Il permet d'exporter tes fonctions au format C standard sans decoration des noms.
> > > > > > Voila interieur:
> > > > > > LIBRARY "ServScra"
> > > > > > DESCRIPTION 'ServScra Windows Dynamic Link Library'
> > > > > >
> > > > > > EXPORTS
> > > > > > IsFreeScrab @10 NONAME
> > > > > > About @11 NONAME
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > >
> > > > > > >
4ndr&@lphu$> > > > > > >
> > > > > > > j'ai un peu de mal à suivre ta démarche, et c'est koi un fichier def ?? (en msft visual c++ ?)
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Je te mets un exemple, un de mes anciens progs.
> > > > > > > > Dans la dll:
> > > > > > > > BOOL IsFreeScrab(const char* pszPath);
> > > > > > > > exporte grace a fichier def, que je prefere.
> > > > > > > > Dans prog appelant:
> > > > > > > > typedef BOOL (*ISFREESCRAB) (const char* pszPath);
> > > > > > > > ISFREESCRAB IsFreeScrab;
> > > > > > > > IsFreeScrab = (ISFREESCRAB)GetProcAddress(hDll, (LPCSTR)10);
> > > > > > > > BOOL bOK = IsFreeScrab(szfile); // licence valide ?
> > > > > > > > etc...
> > > > > > > > BruNews, ciao...
> > > > > > > >
> > > > > > > >
> > > > > > > > -------------------------------
> > > > > > > > Réponse au message :
> > > > > > > > -------------------------------
> > > > > > > >
> > > > > > > > >
4ndr&@lphu$> > > > > > > > >
> > > > > > > > > 1)
> > > > > > > > > en fait j'ai un premier probleme d'incompatiblité de mon include qui est fait avec borland et de mon programme avec VC++ 6.0.
> > > > > > > > > Mais ca je l'ai normalement résolu en remplaçant:
> > > > > > > > >
> > > > > > > > > //prototype d'une des fonctions
> > > > > > > > > int FUNEXP IDN_OpenComm(IDN_DRVOPEN *idn_drvopen);
> > > > > > > > >
> > > > > > > > > par
> > > > > > > > >
> > > > > > > > > __declspec( dllexport ) int IDN_OpenComm(IDN_DRVOPEN *idn_drvopen);
> > > > > > > > >
> > > > > > > > > 2)
> > > > > > > > > j'ai aussi chargé ma dll avec loadlibrary et utilisé getprocadress mais c'est justement sur ce dernier point que "ca se gate :
> > > > > > > > >
> > > > > > > > > pour la fonction que j'ai mis dans l'exemple, j'ai créer un pointeur:
> > > > > > > > >
> > > > > > > > > __declspec( export ) int (*pIDN_OpenComm)(IDN_DRVOPEN *idn_drvopen);
> > > > > > > > >
> > > > > > > > > ...et lorsque je copile tout ca,
> > > > > > > > >
> > > > > > > > > j'obtient l'erreur suivante:
> > > > > > > > > "error C2106: '=' : left operand must be l-value"
> > > > > > > > > à la ligne:
> > > > > > > > > (FARPROC)pIDN_OpenComm=GetProcAdress(hDll,...);
> > > > > > > > >
> > > > > > > > > SVP AIdez moi je vais craquer...merci d'avence !
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>