|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
Bonjour,
Je travaille sur Matlab où je crée une S-function en C avec compilateur basique (lcc-win32) et j'essaye d'intégrer une fonction d'attente mais ça ne fonctionne pas. Quand je mets le header <windows.h>, j'ai le message d'erreur : could not open source file "win.h" #include <win.h> Je précise le header <win.h> et j'ai un autre message d'erreur plus important : (I) C0161-D; "C:\Program Files\MATLAB\R2007b\sys\lcc\include\win.h", line 8 pos 9; unrecognized #pragma #pragma pack(push,1) ^ (E) C0018; "C:\Program Files\MATLAB\R2007b\sys\lcc\include\win.h", line 413 pos 23; expected a ")" typedef int (CALLBACK *BFFCALLBACK) (HWND,UINT,LPARAM,LPARAM); ^ (E) C0018; "C:\Program Files\MATLAB\R2007b\sys\lcc\include\win.h", line 414 pos 24; expected a ")" typedef UINT (CALLBACK *LPCCHOOKPROC) (HWND,UINT,WPARAM,LPARAM); ... Error limit reached. Compilation terminated. 20 Errors 4 Warnings 1 Informational Je ne sais donc pas comment faire pour m'en sortir, toutes ces histoires d'erreurs qui n'en finissent pas me découragent. Quelqu'un aurait une idée ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
Essaye de mettre #include <windows.h> pour voir.
Pourquoi utiliser lcc-win32 ? D'après Wikipedia, la dernière version stable a 9 ans !
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
20
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
Je n'utilisais que ce compilateur car c'est le seul que l'ordi possédait (un Windows XP de 2002) et jusqu'à présent je n'avais eu aucun problème.
Je vais essayer de voir alors en changeant de compilateur. En fait, je ne peux utiliser que ces compilateurs : http://www.mathworks.fr/support/compilers/release2007b/ Je vais essayer via l'installation de Borland, aucun n'étant déjà installé |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
Pas GG sur ce coup, TheMathWorks...
As-tu essayé avec lcc-win32 mais en utilisant l'en-tête que je t'indique ?
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
J'ai évidemment essayé avec .
Ca m'indique ce message d'erreur : could not open source file "windows.h" #include <windows.h> Quand je le regarde de plus près, je le trouve étrangement vide alors que je n'y ai jamais touché. Voici son contenu : Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
Effectivement, c'est louche. A titre de comparaison, voici celui que me propose MinGW (portage de GCC pour Windows) :
Code :
Tu peux essayer avec Borland C++, bien qu'il te faudra peut-être une version ancienne comme indiquée dans ta page.
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
||
|
10
|
|
|
#7 |
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
Nouvel essai mais avec Borland, je mets #include <windows.h> et j'ai de nouveau
could not open source file "windows.h" #include <windows.h> Je copie ce fichier dans le dossier avec mes autres fichiers et voilà un nouveau message d'erreur : (E) C1326; "..\windows.h", line 28 pos 30; unimplemented target "c" #pragma option push -b -a8 -pc -A- /*P_O_Push*/ |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
As-tu crée ou récupéré ce code ? Si 1 : pourquoi avoir mis de pragma ? Si 2Où as-tu récupéré le code ? Quel compilateur avait été utilisé pour le faire marcher ?
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
Je ne touche jamais aux codes des headers.
J'ai juste un problème : à chaque fois, mon compilateur n'a pas l'impression de connaître la localisation des headers, alors qu'ils sont dans son propre dossier, dans Include. A chaque fois, pour qu'il les reconnaisse, je dois copier le fichier header à l'endroit où sont les autres fichiers de ma S-function (le fichier .c, le modèle simulink et C-MEX file). En fait j'ai deux compilations à faire : celle pour transformer le fichier .c en C-mex file qui se déroule sans problème, puis celle pour lancer la simulation, là où les problèmes arrivent. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
Par défaut, ton compilateur ne va pas chercher dans un sous-dossier Includes, c'est pour ça que tu dois mettre les headers dans le même dossier que les fichiers sources.
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
10
|
|
|
#11 |
|
Invité de passage
![]() Inscription : septembre 2012 Messages : 6 ![]() |
J'ai résolu une partie du problème.
Ce n'est pas le compilateur de Matlab qui pose problème, mais le compilateur de la carte de simulation qui lui est propre. J'ai fouillé ses headers pour y trouver des fonctions ressemblant à sleep(), delay() ou wait(). J'ai trouvé une fonction dans un header que j'ai ajouté : Code :
_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long); (I) C0007-D; "C:\PPCTools33\inc\stlport\config\stl_mri.h", line 217 pos 52; unrecognized token # define _STLP_NATIVE_HEADER(header) STRINGIFY(..\##header) ^ (I) C0007-D; "C:\PPCTools33\inc\stlport\config\stl_mri.h", line 218 pos 54; unrecognized token # define _STLP_NATIVE_C_HEADER(header) STRINGIFY(..\##header) ^ (I) C0007-D; "C:\PPCTools33\inc\stlport\config\stl_mri.h", line 219 pos 64; unrecognized token # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) STRINGIFY(..\##header) ^ (I) C0007-D; "C:\PPCTools33\inc\stlport\config\stl_mri.h", line 220 pos 64; unrecognized token # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) STRINGIFY(..\##header) ^ (E) C0020; "C:\PPCTools33\inc\stlport\stl\_config.h", line 566 pos 1; identifier "namespace" is undefined _STLP_BEGIN_NAMESPACE _STLP_END_NAMESPACE ^ (E) C0065; "C:\PPCTools33\inc\stlport\stl\_config.h", line 566 pos 1; expected a ";" _STLP_BEGIN_NAMESPACE _STLP_END_NAMESPACE ^ (I) C0007-D; "C:\PPCTools33\inc\stlport\cstddef", line 46 pos 12; unrecognized token # include _STLP_NATIVE_C_HEADER(stddef.h) ^ (F) C0005; "C:\PPCTools33\inc\stlport\cstddef", line 46 pos 43; could not open source file "..\stddef.h" # include _STLP_NATIVE_C_HEADER(stddef.h) ^ Compilation terminated. 2 Errors 5 Informationals La ligne 566 qui pose problème affiche : _STLP_BEGIN_NAMESPACE _STLP_END_NAMESPACE Je ne sais plus comment faire... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com