Dll .def

moloko2000 Messages postés 16 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2003 - 13 août 2003 à 12:05
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 13 août 2003 à 14:52
Que signifie cette erreur ?

hop.def : warning LNK4017: s400_ipdetail@@YGPADHHQAD@Z statement not supported for the target platform; ignored

Je n'arrive pas à utiliser les fonctions de ma dll ,pourtant j'utilise le code suivant pour exporter

#define export __declspec (dllexport)

export char * __stdcall s400_ipdetail(int,int,char [150]);

Je n'ai pas d'erreurs à la compil mais impossible d'utiliser la dll depuis un autre programme.

please help me

5 réponses

moloko2000 Messages postés 16 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2003
13 août 2003 à 12:05
MOLOCH
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
13 août 2003 à 12:37
- Si tu utilises le __declspec (dllexport) tu n'as normallement pas besoin de maintenir un fichier .DEF à moins que tu sois obligé de le faire pour ton autre programme.

- Tu exportes des noms décorés (C++) et non des noms C. Il faut donc remplacer:

#define export __declspec (dllexport)


par

#define export extern "C" __declspec (dllexport)


- Ton paramètre char[150] doit être remplacé par un char* car on ne peut pas définir la taille d'un tableau dans le prototype d'une fonction.

Kaid - kaid.fr.st
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 14:28
Salut,
Désolé mais je comprends pas le extern "C" .
Une fonction dans une DLL ne peut etre qu'en C ? c'est un peu comme un "cast" ?
Merci
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
13 août 2003 à 14:45
Non pas du tout.
Le C++ exporte les noms des fonctions d'une DLL sous forme décorée (exemple: s400_ipdetail@@YGPADHHQAD@Z). Quand toi tu utilises une DLL, tu ne donnes pas le nom C++ mais le nom C (exemple: s400_ipdetail) de la fonction. Le extern "C" spécifie simplement au compilateur d'exporter la fonction selon la convention du C et non du C++.

Kaid - kaid.fr.st
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 août 2003 à 14:52
Salut,
Merci beaucoup, j'avais jamais compris ce a quoi ca servait.
0
Rejoignez-nous