probleme de nom décoré DLL C

Le
giova
Bonjour.

J'essaye desespérément depuis plus d'une semaine de faire une dll
compatible en C mais qui en interne est en C++

j'ai reussi a la créer et a l'utiliser sous visual.

mais quand je tente de l'utiliser sous CVI (compilateur C) je bloque sur
le probleme suivant :

j'ai 2 fonctions voici le .H de ma dll :

________________________________________________

#ifdef __cplusplus
extern "C" {
#endif

int __declspec(dllexport) _stdcall InitGdiplus(void);
void __declspec(dllexport) _stdcall CloseGdiplus(void);

#ifdef __cplusplus
}
#endif

________________________________________________

j'ai egalement un .def :

________________________________________________

LIBRARY LSGdiplus

EXPORTS

InitGdiplus
CloseGdiplus

________________________________________________

Et donc sous CVI lorsque j'appelle l'une de ces fonction le compilateur
me jete en me répondant :

undefined symbol '_InitGdiplus@0' not defined in main.c
undefined symbol '_CloseGdiplus@0' not defined in main.c

j'ai essayé plusieurs choses comme par exemple de mettre dans mon .def :

InitGdiplus = _InitGdiplus@0

mais rien n'y fait et pourtant je me répéte, sous visual je ne rencontre
aucun probleme pour appeller ces fonctions.

Je pense qu'il doit y avoir un parametre a modifier dans le projet sous
visual pour résoudre ce probleme de nom décoré.

Dernier détail, si je regarde ma dll je vois ceci :

pour le premier .def :

Export Table

Name: LSGdiplus.dll
Characteristics: 00000000
Time Date Stamp: 408bd341
Version: 0.00
Base: 00000001
Number of Functions: 00000002
Number of Names: 00000002

Ordinal Entry Point Name
0000 00001080 CloseGdiplus
0001 00001030 InitGdiplus

pour le second .def (cad en mettant InitGdiplus = _InitGdiplus@0):

Export Table

Name: LSGdiplus.dll
Characteristics: 00000000
Time Date Stamp: 408bd341
Version: 0.00
Base: 00000001
Number of Functions: 00000004
Number of Names: 00000004

Ordinal Entry Point Name
0000 00001080 CloseGdiplus
0001 00001030 InitGdiplus
0002 00001080 _CloseGdiplus@0
0003 00001030 _InitGdiplus@0

mais pourquoi tant de haine?
voila ma balize de détresse est lancée.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
giova
Le #735131
Probleme résolu, merci quand meme.

giova wrote:

Bonjour.

J'essaye desespérément depuis plus d'une semaine de faire une dll
compatible en C mais qui en interne est en C++

j'ai reussi a la créer et a l'utiliser sous visual.

mais quand je tente de l'utiliser sous CVI (compilateur C) je bloque sur
le probleme suivant :

j'ai 2 fonctions voici le .H de ma dll :

________________________________________________

#ifdef __cplusplus
extern "C" {
#endif

int __declspec(dllexport) _stdcall InitGdiplus(void);
void __declspec(dllexport) _stdcall CloseGdiplus(void);

#ifdef __cplusplus
}
#endif

________________________________________________

j'ai egalement un .def :

________________________________________________

LIBRARY LSGdiplus

EXPORTS

InitGdiplus
CloseGdiplus

________________________________________________

Et donc sous CVI lorsque j'appelle l'une de ces fonction le compilateur
me jete en me répondant :

undefined symbol '' not defined in main.c
undefined symbol '' not defined in main.c

j'ai essayé plusieurs choses comme par exemple de mettre dans mon .def :

InitGdiplus =

mais rien n'y fait et pourtant je me répéte, sous visual je ne rencontre
aucun probleme pour appeller ces fonctions.

Je pense qu'il doit y avoir un parametre a modifier dans le projet sous
visual pour résoudre ce probleme de nom décoré.

Dernier détail, si je regarde ma dll je vois ceci :

pour le premier .def :

Export Table

Name: LSGdiplus.dll
Characteristics: 00000000
Time Date Stamp: 408bd341
Version: 0.00
Base: 00000001
Number of Functions: 00000002
Number of Names: 00000002

Ordinal Entry Point Name
0000 00001080 CloseGdiplus
0001 00001030 InitGdiplus

pour le second .def (cad en mettant InitGdiplus = ):

Export Table

Name: LSGdiplus.dll
Characteristics: 00000000
Time Date Stamp: 408bd341
Version: 0.00
Base: 00000001
Number of Functions: 00000004
Number of Names: 00000004

Ordinal Entry Point Name
0000 00001080 CloseGdiplus
0001 00001030 InitGdiplus
0002 00001080
0003 00001030

mais pourquoi tant de haine?
voila ma balize de détresse est lancée.


Publicité
Poster une réponse
Anonyme