Salut,
J'essais de charger une dll crée en C dans un code C++. La dll est celle d'un logiciel open-source appelée Epanet
http://www.epa.gov/NRMRL/wswrd/dw/epanet.html
Elle est fourni avec un .h et un .lib
J'ai bien linker ma dll dans visual studio mais quand je compile j'obtiens des avertissements et des erreurs:
voici une partie du code du .h et le compilateur n'aime pas les fonctions déclarées avecwarning C4518: 'int ' : classe de stockage ou spécificateur(s) de type inattendu(es) ; ignoré(es)
warning C4502: 'linkage specification' nécessite l'utilisation du mot clé 'extern' et doit précéder tous les autres spécificateurs
error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut
Code : Sélectionner tout - Visualiser dans une fenêtre à part extern "C" __declspec(dllexport) __stdcallca compile très bien si je change les paramètres de visual studio pour qu'il compile en C au lieu de C++ mais je veux coder en C++ et donc je n'ai pas le choix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #undef WINDOWS #ifdef _WIN32 #define WINDOWS #endif #ifdef __WIN32__ #define WINDOWS #endif // --- define DLLEXPORT #ifdef WINDOWS #ifdef __cplusplus #define DLLEXPORT extern "C" __declspec(dllexport) __stdcall #else #define DLLEXPORT __declspec(dllexport) __stdcall #endif #else #ifdef __cplusplus #define DLLEXPORT extern "C" #else #define DLLEXPORT #endif #endif // --- declare the EPANET toolkit functions int DLLEXPORT ENepanet(char *, char *, char *, void (*) (char *)); int DLLEXPORT ENopen(char *, char *, char *); int DLLEXPORT ENsaveinpfile(char *); int DLLEXPORT ENclose(void);
Merci pour votre aide.
Partager