IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques, systèmes et outils C Discussion :

Fonction delay(), sleep(), wait() en C ?


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Fonction delay(), sleep(), wait() en C ?
    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 ?

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Essaye de mettre #include <windows.h> pour voir.

    Pourquoi utiliser lcc-win32 ? D'après Wikipedia, la dernière version stable a 9 ans ! Je ne pourrais que te conseiller d'utiliser un compilateur plus récent, comme MinGW qui est libre, et supporte les #praga pack et <windows.h> sans soucis.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    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é

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Pas GG sur ce coup, TheMathWorks...

    As-tu essayé avec lcc-win32 mais en utilisant l'en-tête que je t'indique ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* $Revision: 1.2 $ */
    #ifndef _GNU_H_WIN32Headers
    #define _GNU_H_WIN32Headers
    #include <win.h>
    #endif

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Effectivement, c'est louche. A titre de comparaison, voici celui que me propose MinGW (portage de GCC pour Windows) :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    /*
    	windows.h - main header file for the Win32 API
     
    	Written by Anders Norlander <anorland@hem2.passagen.se>
     
    	This file is part of a free library for the Win32 API.
     
    	This library is distributed in the hope that it will be useful,
    	but WITHOUT ANY WARRANTY; without even the implied warranty of
    	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     
    */
    #ifndef _WINDOWS_H
    #define _WINDOWS_H
    #if __GNUC__ >=3
    #pragma GCC system_header
    #endif
     
    /* translate GCC target defines to MS equivalents. Keep this synchronized
       with winnt.h. */
    #if defined(__i686__) && !defined(_M_IX86)
    #define _M_IX86 600
    #elif defined(__i586__) && !defined(_M_IX86)
    #define _M_IX86 500
    #elif defined(__i486__) && !defined(_M_IX86)
    #define _M_IX86 400
    #elif defined(__i386__) && !defined(_M_IX86)
    #define _M_IX86 300
    #endif
    #if defined(_M_IX86) && !defined(_X86_)
    #define _X86_
    #elif defined(_M_ALPHA) && !defined(_ALPHA_)
    #define _ALPHA_
    #elif defined(_M_PPC) && !defined(_PPC_)
    #define _PPC_
    #elif defined(_M_MRX000) && !defined(_MIPS_)
    #define _MIPS_
    #elif defined(_M_M68K) && !defined(_68K_)
    #define _68K_
    #endif
     
    #ifdef RC_INVOKED
    /* winresrc.h includes the necessary headers */
    #include <winresrc.h>
    #else
     
    #include <stdarg.h>
    #include <windef.h>
    #include <wincon.h>
    #include <winbase.h>
    #if !(defined NOGDI || defined  _WINGDI_H)
    #include <wingdi.h>
    #endif
    #ifndef _WINUSER_H
    #include <winuser.h>
    #endif
    #ifndef _WINNLS_H
    #include <winnls.h>
    #endif
    #ifndef _WINVER_H
    #include <winver.h>
    #endif
    #ifndef _WINNETWK_H
    #include <winnetwk.h>
    #endif
    #ifndef _WINREG_H
    #include <winreg.h>
    #endif
    #ifndef _WINSVC_H
    #include <winsvc.h>
    #endif
     
    #ifndef WIN32_LEAN_AND_MEAN
    #include <cderr.h>
    #include <dde.h>
    #include <ddeml.h>
    #include <dlgs.h>
    #include <imm.h>
    #include <lzexpand.h>
    #include <mmsystem.h>
    #include <nb30.h>
    #include <rpc.h>
    #include <shellapi.h>
    #include <winperf.h>
    #ifndef NOGDI
    #include <commdlg.h>
    #include <winspool.h>
    #endif
    #if defined(Win32_Winsock)
    #warning "The  Win32_Winsock macro name is deprecated.\
        Please use __USE_W32_SOCKETS instead"
    #ifndef __USE_W32_SOCKETS
    #define __USE_W32_SOCKETS
    #endif
    #endif
    #if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN))
    #if (_WIN32_WINNT >= 0x0400)
    #include <winsock2.h>
    /*
     * MS likes to include mswsock.h here as well,
     * but that can cause undefined symbols if
     * winsock2.h is included before windows.h
     */
    #else
    #include <winsock.h>
    #endif /*  (_WIN32_WINNT >= 0x0400) */
    #endif
    #ifndef NOGDI
    /* In older versions we disallowed COM declarations in __OBJC__
       because of conflicts with @interface directive.  Define _OBJC_NO_COM
       to keep this behaviour.  */ 
    #if !defined (_OBJC_NO_COM) 
    #if (__GNUC__ >= 3) || defined (__WATCOMC__)
    #include <ole2.h>
    #endif
    #endif /* _OBJC_NO_COM */
    #endif
     
    #endif /* WIN32_LEAN_AND_MEAN */
     
    #endif /* RC_INVOKED */
     
    #ifdef __OBJC__
    /* FIXME: Not undefining BOOL here causes all BOOLs to be WINBOOL (int),
       but undefining it causes trouble as well if a file is included after
       windows.h
    */
    #undef BOOL
    #endif
     
    #endif
    Ce qui est louche aussi, c'est que le message d'erreur laisse à penser qu'il n'a pas trouvé le fichier.

    Tu peux essayer avec Borland C++, bien qu'il te faudra peut-être une version ancienne comme indiquée dans ta page.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    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*/

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    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 ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    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.

  10. #10
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    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.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    _STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long);
    Au final de nouvelles erreurs quand j'essaye de l'utiliser :

    (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...

Discussions similaires

  1. fonction delay(); du C
    Par kromartien dans le forum C
    Réponses: 11
    Dernier message: 08/12/2007, 12h15
  2. Sleep, Wait, Timer : que choisir ?
    Par Ender dans le forum Général VBA
    Réponses: 2
    Dernier message: 25/07/2006, 13h02
  3. La fonction PHP sleep() pompe t-elle en ressource UC ?
    Par Thierry8 dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2005, 19h37
  4. Fonction du genre delay, sleep, wait pour attendre 1000ms
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 17h17
  5. fonction delay?
    Par in tenebris dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/02/2005, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo