Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de nom décoré DLL C

1 réponse
Avatar
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.

1 réponse

Avatar
giova
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.