charger une dll C dans un code C++
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:
Citation:
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:
extern "C" __declspec(dllexport) __stdcall
Code:
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.