Erreur dans une librairie

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Ou alors il manque un fichier d'inclusion qui indique ce qu'est WINAPI et CAN_PF_CALLBACK
?
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
Utilisateur anonyme
 
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
JwTdd
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
C'est bon avec la solution de Dal j'ai plu mon problème merci pour tes réponses en tout cas.
0