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:
warning 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
voici une partie du code du .h et le compilateur n'aime pas les fonctions déclarées avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
extern "C" __declspec(dllexport) __stdcall
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);
ca 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.

Merci pour votre aide.