Appel de fonctions dans une dll

cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005 - 17 avril 2003 à 09:54
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 20 avril 2003 à 06:24
Bonjour,

j'ai un pb un peu bizarre.
j'ai créer des fonctions dans une dll.
j'utilise __declspec(dllexport) pour dire qu'il faut exporter ces fonctions.
Ex dans mon .h : __declspec(dllexport) int maFonc( char *);

el le .cpp :
int maFonc( char * chaine )
{ .............}

Quand j'apelle cette fonction sous FoxPro, NO PROBLEMO, que ce soit en debug ou Run.

Par contre en VB, je suis obliger de créer l'éxécutable utilisant la dll et de le lancer pour ke ca fonctionne correctement. Sinon kan j'exécute mon prog VB en pas a pas, j'ai l'erreur suivante :
"Convention d'appel de la dll incorecte '49'"

On m'a donc dis d'utiliser _stdcall
Mais avec _stdcall je n'arrivais plus a exporter mes fonctions, car maintenant mes programmes ne 'voient' plus les fonctions exportées par la dll.
Alors j'ai ajouté un .def dans lequel je mets juste le nom des fonctions ke je souhaite exporter.
ET LA CA MARCHE !

Mais maintenant j'ai remarquer que __declspec(dllexport) ne me servait plus a rien car ca marche même kan je ne le mets po !

Mes questions :
Pourkoi __declspec(dllexport) n'exporte plus a partir du moment ou j'ai ajouté _stdcall ? Est-ce normal ou bien est-ce ke je fais kelke choz de mal?

Peut on me dire s'il est préférable d'utiliser __declspec(dllexport) pour exporter ou bien utiliser un .def ?

Merci beaucoup parce ke la, tout se mélange pour moi :o(

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 avril 2003 à 10:46
Serait long a expliquer mais en tous cas ne te sert pas de __declspec(dllexport) et prefere toujours __stdcall et le .def pour exporter. Pas de decoration des noms donc accessible par tout autre langage.
BruNews, ciao...
0
cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005
17 avril 2003 à 12:21
OK merci beaucoup
réponse simple et efficace.
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
20 avril 2003 à 06:24
Pour infos pour éviter les decorations:
#ifdef __cplusplus
extern "C" {
#endif
...
// code
...
#ifdef __cplusplus
}
#endif

Core Breaker :)
0
Rejoignez-nous