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

SDL Discussion :

[C] utiliser uniquement la console sous windows


Sujet :

SDL

  1. #1
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut [C] utiliser uniquement la console sous windows
    salut,
    j'utilise la SDL dans un programme, mais uniquement à cause d'une gestion très simple des threads et à cause de SDL_GetTicks();, j'ai besoin de savoir très précisément combien de temps met mon programme pour s'exécuter...

    Sous linux, pas de problème, j'initialise SDL avec SDL_Init(SDL_INIT_VIDEO), mais je ne charge pas de surface ni d'écran et j'utilise donc la console pour afficher les résultats de mon programme.

    Mais sous windows, en initialisant SDL de cette manière, je n'ai pas accès à la console (même si il y en a une qui s'ouvre)...

    Je n'utilise pas la SDL pour afficher les résultats dans une fenêtre, car je veux tirer chaque FLOP/s de mon processeur pour ce programme...

    Comment laisser la controle à la console?
    Ou bien connaissez-vous une librairie qui permettrait de faire ce que j'ai décrit plus haut de manière très simple, mais aussi en console??

    Bien à vous,
    Bornerdogge

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 585
    Par défaut
    Citation Envoyé par Bornerdogge Voir le message
    Ou bien connaissez-vous une librairie qui permettrait de faire ce que j'ai décrit plus haut de manière très simple, mais aussi en console??

    Bien à vous,
    Bornerdogge
    oui cela s'appelle le MSDN et les API de Windows.
    C'est un peu du bricolage pour pas grand chose...
    Le problème avec l'informatique c'est qu'il ya des couches logicielles pour faire tout et n'importe quoi ce qui fait que les gens font un peu n'importe quoi alors qu'un simple main() et programme console sous Windows peut faire la même chose.

    SDL c'est plutot fait pour les jeux ou animations multimédias.
    J'ai pas regardé mais pas dit que tu aies accès à la gestion des sections critiques et autres caractêristiques de la programmation multithreading
    Si tu tiens à avoir quelque chose absolument de portable il y a pthread biblio censée gérer les threads.

    Maintenant si tu tiens absolument à utiliser SDL ce qui est ton souhait je le respecte tu vas être bloqué à un certain moment pour réaliser des taches particulières.
    La gestion de la console sous Windows c'est propre à l'OS donc faut passer par les API
    Comment laisser la controle à la console?
    A ma connaissance seulement avec API win ce qui est radicalement incompatible avec SDL
    C'est soit l'un soit l'autre

  3. #3
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    oui j'avais vu pthread mais est-ce aussi simple que SDL, et, surout, portable linux-windows?

    je ne peux pas utiliser de librairies windows car elles sont unitilisables sur linux!

    "Maintenant si tu tiens absolument à utiliser SDL ce qui est ton souhait je le respecte tu vas être bloqué à un certain moment pour réaliser des taches particulières.
    La gestion de la console sous Windows c'est propre à l'OS donc faut passer par les API"

    c'est un très petit programme, très ciblé sur la vitesse d'exécution, il n'y aura pas de taches trop particulières...

    je veux vraiment rester très simple, d'abord parce que je ne suis pas du dout, expert, de deux par manque de temps, et de trois à cause de la vitesse...

    SDL me permettait d'avoir des threads en 2-3 lignes arch-simples à mettre en place, c'est pour ça.... mais je vais me renseigner pour pthread...

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Sauf si je me trompe, tu ne veux que voir les résultats de ton exécution et pas vraiment prendre contrôle de la console.

    La SDL sous windows crée un fichier stdout.txt qui te montre ce qui a été affiché.

    Jc

  5. #5
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    j'ai mal formulé ça...

    non, j'ai vraiment besoin de la console, de 1 pour afficher un résultat toujours changeant (le nombre d'itérations de calcul effectuées) et l'utilisateur doit entrer des valeurs.

    j'ai donc besoin de controler la console....

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Bornerdogge Voir le message
    j'ai mal formulé ça...

    non, j'ai vraiment besoin de la console, de 1 pour afficher un résultat toujours changeant (le nombre d'itérations de calcul effectuées) et l'utilisateur doit entrer des valeurs.

    j'ai donc besoin de controler la console....
    Ok alors il faut regarder dans le forum nous en avons déjà parler mais sous windows la solution revient souvent à modifier les sources de la SDL pour modifer SDL_main en définissant la macro NO_STDIO_REDIRECT.

    D'autres solutions à mon souvenir ont déjà été proposé dans ce forum.

    Jc

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Par défaut
    excusez moi si je dis des conneries, mais j'ai bien la console sous windows, et surtout je peux la "controler".

    je n'ai pas modifié les sources de SDL, je n'utilise pas d'API pur windows.
    par contre quand j'ai demarré mon projet j'ai tout simplement choisit "console application".

    ca marche nickel, y compris pour les saisies utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    #include <string>
    #include <iostream>
     
    // dans la main apres avoir lancé l'initiialisation de la SDL...
    	std::string z;
    	std::cout<<"test"<<std::endl;
    	std::cin>>z;
    je ne vois pas ou est le probleme, ou alors j'ai pas compris la question.

    PS : rien ne m'oblige a faire des Blit ou un SDL_Flip sur ma surface hein.


    EDIT (voir message suivant) : Je pense que FearYourSelf à (comme toujours) raison, ca doit dependre de l'outil. Pour info moi c'est ce bon vieux VC6, je pense que l'option a été gardé sur les versions suivantes...

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Oui mais je crois que pas toutes les IDEs proposent cette option, j'ai aussi vu cette possibités dans les sources de la SDL.

    Jc

  9. #9
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    j'utilise code::blocks ou dev-c++ c'est selon (c'est le même compilateur de toute façon).

    je vais chercher sur le forum et télécharger les sources de la SDL alors...

  10. #10
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 585
    Par défaut
    Citation Envoyé par Bornerdogge Voir le message
    oui j'avais vu pthread mais est-ce aussi simple que SDL, et, surout, portable linux-windows?
    ...
    http://partow.net/programming/posixs...per/index.html

  11. #11
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    merci, je vais un peu voir ça....

    quant aux sources, je suis un peu allé voir:
    il me suffirait d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NO_STDIO_REDIRECT 1
    dans SDL_main.h ??

    car je vois ça dans SDL_win32_main.c:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "SDL_main.h"
    /*...*/
    #ifndef NO_STDIO_REDIRECT
    # ifdef _WIN32_WCE
      static wchar_t stdoutPath[MAX_PATH];
      static wchar_t stderrPath[MAX_PATH];
    # else
      static char stdoutPath[MAX_PATH];
      static char stderrPath[MAX_PATH];
    # endif
    #endif

  12. #12
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Bornerdogge Voir le message
    merci, je vais un peu voir ça....

    quant aux sources, je suis un peu allé voir:
    il me suffirait d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NO_STDIO_REDIRECT 1
    dans SDL_main.h ??
    Oui cela devrait suffir ou directement dans le .c

    Jc

  13. #13
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    apparament ça ne marche pas...

    je vais voir pour pthread alors....

    à moins que j'aie mal fait la modif pour NO_STDIO_REDIRECT??
    dans le dossier include de dev-c++ j'ai modifié SDL_main.h et ajouté simplement ce que j'avais dit...
    je dois recompiler ou ça suffit comme ça?

  14. #14
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Bornerdogge Voir le message
    apparament ça ne marche pas...

    je vais voir pour pthread alors....

    à moins que j'aie mal fait la modif pour NO_STDIO_REDIRECT??
    dans le dossier include de dev-c++ j'ai modifié SDL_main.h et ajouté simplement ce que j'avais dit...
    je dois recompiler ou ça suffit comme ça?
    Ah non, c'est plus compiler, il faut recompiler la bibliothèque SDL.

    Donc télécharger les sources, faire un projet et recompiler le tout.

    Jc

  15. #15
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    il me semblait bien...

    en revance, j'ai téléchargé les sources, mais la je suis un peu "perdu".
    j'ai été voir un peu dans les archives et répertoires.
    il y a des archives de projets, mais pour watcom, VS et VC uniquement.
    j'ai donc essayé d'importer le projet visual studio et le projet visual c++, mais ça ne marche pas quand je lance la compilation (il y a des erreurs).
    j'utilise code::blocks avec mingw32 (gcc windows)...

    *EDIT*

    problème résolu, tout compte fait pthread c'est très bien aussi...

    *EDIT*

    je suis parvenu à compiler avec pthread sous windows, mais pas sous linux.
    sous linux:
    avec les paquets libpthread-dev et libpthread2 installés, l'option '-lpthread' lors de l'appel de GCC et '#include <pthread.h>' dans la fichier, voici les probs:
    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
    In file included from main.c:3:
    /usr/include/pthread.h:285: error: conflicting types for ‘pthread_t’
    /usr/include/bits/pthreadtypes.h:50: error: previous declaration of ‘pthread_t’ was here
    /usr/include/pthread.h:286: error: conflicting types for ‘pthread_attr_t’
    /usr/include/bits/pthreadtypes.h:57: error: previous declaration of ‘pthread_attr_t’ was here
    /usr/include/pthread.h:287: error: conflicting types for ‘pthread_key_t’
    /usr/include/bits/pthreadtypes.h:140: error: previous declaration of ‘pthread_key_t’ was here
    /usr/include/pthread.h:289: error: conflicting types for ‘pthread_mutexattr_t’
    /usr/include/bits/pthreadtypes.h:110: error: previous declaration of ‘pthread_mutexattr_t’ was here
    /usr/include/pthread.h:290: error: conflicting types for ‘pthread_mutex_t’
    /usr/include/bits/pthreadtypes.h:104: error: previous declaration of ‘pthread_mutex_t’ was here
    /usr/include/pthread.h:291: error: conflicting types for ‘pthread_condattr_t’
    /usr/include/bits/pthreadtypes.h:136: error: previous declaration of ‘pthread_condattr_t’ was here
    /usr/include/pthread.h:292: error: conflicting types for ‘pthread_cond_t’
    /usr/include/bits/pthreadtypes.h:130: error: previous declaration of ‘pthread_cond_t’ was here
    /usr/include/pthread.h:293: error: conflicting types for ‘pthread_rwlockattr_t’
    /usr/include/bits/pthreadtypes.h:192: error: previous declaration of ‘pthread_rwlockattr_t’ was here
    /usr/include/pthread.h:294: error: conflicting types for ‘pthread_rwlock_t’
    /usr/include/bits/pthreadtypes.h:186: error: previous declaration of ‘pthread_rwlock_t’ was here
    aurais-je fait quelque-chose de mal lors de l'install de pthread??

Discussions similaires

  1. [C++] Programme console sous Windows
    Par Invité4 dans le forum Windows
    Réponses: 4
    Dernier message: 17/08/2006, 22h53
  2. Réponses: 6
    Dernier message: 20/12/2005, 01h03
  3. utilisation d'un makefile sous windows
    Par semenzato dans le forum Windows
    Réponses: 1
    Dernier message: 30/08/2005, 11h29
  4. Problème d'utilisation select () avant recv sous windows
    Par init dans le forum Développement
    Réponses: 3
    Dernier message: 16/03/2005, 20h36
  5. [web] [PerlTk] Console sous windows
    Par Cyspak dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/04/2004, 15h21

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