Erreur dans une librairie

Résolu/Fermé
Utilisateur anonyme - 10 févr. 2015 à 09:18
 Utilisateur anonyme - 11 févr. 2015 à 14:06
Bonjour,

J'ai un problème avec une librairie que je veut utiliser "AnaGate CAN API Library für Windows (32/64 bit)" https://www.anagate.de/support/download.htm la documentation est disponible ici :http://www.anagate.de/download/Manual-AnaGateAPI-en.pdf

J'ai ajouté le #include <AnaGateDllCAN.h> au début et bien placer mon fichier AnaGateDllCAN.h dans l'include mais quand je compile sans même me servir d'une fonction de cette librairie j'ai plusieurs erreurs qui viennent de ma librairie par exemple à cette ligne de ma librairie :
typedef void (WINAPI * CAN_PF_CALLBACK)    ( AnaUInt32 nID, const char *pcBuf, AnaInt32 nLen, AnaInt32 nFlags, AnaInt32 hHandle );


Il me met une erreur :


c:\program files (x86)\codeblocks\mingw\include\anagatedllcan.h|75|error: expected ')' before '*' token|

Si quelqu'un sait d'où vient cette erreur sa m'aiderait beaucoup merci d'avance.

6 réponses

FFran6 Messages postés 13 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 11 février 2015
10 févr. 2015 à 18:02
A mon avis le préprocesseur n'aime pas (WINAPI * CAN_PF_CALLBACK).
Il veut une parenthese fermante avant l'etoile car il ne la prend pas pour un pointeur.
Peut etre supprimer l'espace apres l'etoile ?
0
FFran6 Messages postés 13 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 11 février 2015
10 févr. 2015 à 18:25
Ou alors il manque un fichier d'inclusion qui indique ce qu'est WINAPI et CAN_PF_CALLBACK
?
0
Utilisateur anonyme
11 févr. 2015 à 09:08
Je n'arrive pas a modifier ma librairie donc je peut pas supprimer l'espace après l'étoile...
Bah enfaite je sais pas si j'ai mis au bon endroit mes fichier de ma librairies car j'ai .dll, 1 .lib et 3 .h mais je sais plus ce que je dois faire avec...
0
FFran6 Messages postés 13 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 11 février 2015
11 févr. 2015 à 09:18
essaie d'inclure ta librairie en décrivant le vrai chemin style de ce qui suit :

#include "c:\......"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai toujours la même erreur, par contre si je tire le WINAPI j'ai plus l'erreur mais je n'arrive pas a utiliser mes fonction après... j'ai sa comme message d'erreur en essayant cette fonction par exemple
int hHandle = NULL;
// opens AnaGate CAN duo device on port A, timeout after 1000 millseconds
int nRC = CANOpenDevice(&hHandle,0,1,0,"192.168.2.1",1000);

||=== Build: Debug in test4 (compiler: GNU GCC Compiler) ===|
D:\test4\main.c||In function 'main':|
D:\test4\main.c|9|warning: passing argument 1 of 'CANOpenDevice' from incompatible pointer type [enabled by default]|
c:\program files (x86)\codeblocks\mingw\include\anagatedllcan.h|97|note: expected 'AnaInt32 *' but argument is of type 'int *'|
D:\test4\main.c|9|warning: unused variable 'nRC' [-Wunused-variable]|
obj\Debug\main.o||In function `main':|
D:\test4\main.c|9|undefined reference to `_imp__CANOpenDevice'|
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
0
Salut, " reference to `_imp__CANOpenDevice'| " ça c'est une erreur pendant l'edition des "liens",
dans project>properties>Build targets>Build option>linker settings
rajouter AnaGateCanDll.lib dans link libraries

Cependant il a été compilé par Visual C++, c'est pas dit que ça fonctionnera avec mingw-gcc
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
11 févr. 2015 à 13:24
https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types?redirectedfrom=MSDN#WINAPI

WinDef.h sera inclus si tu inclus windows.h dans ton code avant d'inclure ton fameux header

par exemple dans ton source, tu fais :

#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <AnaGateDllCAN.h>


si cela ne suffit pas, vois si tu n'as pas besoin de lier dans la partie Linker settings des ressources telles que : gdi32, user32, kernel32 qui sont au minimum présentes pour un projet Windows

vois aussi en supprimant le 1er define sur WIN32_LEAN_AND_MEAN (https://support.microsoft.com/en-us/help/166474)

sinon, les réserves de JwTdd liées au fait que la bibliothèque semble conçue pour Visual C++ sont justifiées.


Dal
0
Utilisateur anonyme
11 févr. 2015 à 14:05
Merci Dal pour ta réponse sa fonction bien et j'arrive à utiliser ma fonction, problème résolu ^^
0
FFran6 Messages postés 13 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 11 février 2015
11 févr. 2015 à 11:01
A mon avis il faut parcourir toutes les librairies et chercher ou est déclarer (en typedef sans doute) le WINPAPI... et l'inclure avant de s'en servir...
0
Utilisateur anonyme
11 févr. 2015 à 14:06
C'est bon avec la solution de Dal j'ai plu mon problème merci pour tes réponses en tout cas.
0