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

C Discussion :

Compiler libusb-win32 sous Visual C++


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Compiler libusb-win32 sous Visual C++
    Bonjour!

    Un nouveau problème s'offre à moi et je le trouve plus coriace que les autres celui-là!

    J'utilise libusb-win32 1.2.6. J'ai téléchargé les sources et créé un projet sous Visual C++ 2010 Express pour le faire compiler avant même de commencer à y apporter des modifications.

    Et là, c'est le drame.... Le fichier libusb_dyn.c fait appel à l'en-tête usb.h et il ne le trouve pas. Je me suis empressé d'aller vérifier s'il était là mais il n'apparaît nulle part.

    Alors j'ai eu une idée (peut-être stupide): vu que c'est un driver Windows, il utilise peut-être le WDK. J'ai donc essayé d'utiliser le fichier usb.h du WDK... Ca ne marche pas, forcément...
    Puis j'ai tenté de mettre le fichier de la version 0.1 puisque là, il s'y trouve. Sauf qu'il appelle unistd.h et sous Windows, ça fonctionne forcément moins bien avec des appels de fichiers Unix...

    Du coup, j'ai fait chauffer mon moteur de recherche pour avoir des infos mais c'est bien maigre. J'ai trouvé une piste, sur un site anglais (dont j'ai perdu le lien, tant qu'à faire...). Il semblerait que usb.h était utilisé sur la version 0.1 et que son nom a changé pour la version 1.0 et qu'il a eu droit à quelques modifications...

    Je suis donc bloqué, mes neurones ne sachant plus trop où chercher de solution pour parvenir à compiler libusb...

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Tu pourrais mettre un lien vers le site qui distribue la libusb (surtout pour ma flemme personnelle ) ?

    Et pour ton problème : si le .h n'est pas correct, as-tu essayé de le retirer ?
    Et les sites qui parlaient du changement en version 1.0, n'indiquaient-ils pas d'autres .h à inclure (et fournis) ?
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    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
    Pourquoi récupérer les sources et non la version compilée de la bibliothèque ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Le lien vers libusb_win32

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int usb_close(usb_dev_handle *dev)
    {
        if (_usb_close)
            return _usb_close(dev);
        else
            return -ENOFILE;
    }
    En supprimant , -ENOFILE n'est pas reconnu.
    C'est aussi le cas pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef int (*usb_close_t)(usb_dev_handle *dev);
    usb_dev_handle est souligné en rouge.

    De mémoire, il fallait remplacer par usb.h par et là, usb_dev_handle est pris en compte. Mais toujours pas -ENOFILE

    Un problème résolu, un autre apparait...
    C'est maintenant le fichier libusb_driver.h qui fait des siennes.
    Initialement, j'avais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ifdef __GNUC__
    #include <ddk/usb100.h>
    #include <ddk/usbdi.h>
    #include <ddk/winddk.h>
    #include "usbdlib_gcc.h"
    #else
    #include <ntifs.h>
    #include <wdm.h>
    #include "usbdi.h"
    #include "usbdlib.h"
    #endif
    Il ne trouvait pas ntifs et wdm. En lançant une recherche, je les ai trouvé dans le dossier du WDK, je les ai incluse à mon dossier de projet et remplacé les <> par des "". Il ne les trouve toujours pas!
    usbdi et usbdlib sont censés faire partie des fichiers fournies dans les sources... Ben, je les ai pas

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Pourquoi récupérer les sources et non la version compilée de la bibliothèque ?
    Si je ne peux récupérer que la bibliothèque compilé, je suis preneur! Ca me simplifierait les choses, je n'aurais plus qu'à modifier les .c comme j'en ai besoin, non?

  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
    En suivant ton lien, on va dans File, on préfère prendre une release, on choisit la version (1.2.6.0 au hasard) et à la fin on trouve libusb-win32-bin-1.2.6.0.zip. Ca contient des .lib, et des .a, un .h, des .dll. Sûrement tout ce qu'il faut pour commencer ^^

  7. #7
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    La question restante :
    Cherches-tu à modifier la libusb ou à l'utiliser pour un projet qui a besoin d'un périphérique en USB ?
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Cherches-tu à modifier la libusb ou à l'utiliser pour un projet qui a besoin d'un périphérique en USB ?
    Ce que je veux, c'est ajouter un CRC à la suite des données qui seront envoyées par le PC. Pour l'instant, je compte simplement transmettre une chaîne de caractères.
    Ma fonction CRC est prête et je n'ai plus qu'à l'intégrer au fichier window.c, dans la fonction usb_bulk_write normalement.

    En suivant ton lien, on va dans File, on préfère prendre une release, on choisit la version (1.2.6.0 au hasard) et à la fin on trouve libusb-win32-bin-1.2.6.0.zip. Ca contient des .lib, et des .a, un .h, des .dll. Sûrement tout ce qu'il faut pour commencer ^^
    Je n'ai pas trop saisi. Commencer? J'ai simplement à intégrer une fonction CRC au programme. Autant repartir des .c déjà existant non?

    Je ne suis pas programmeur, j'ai quelques notions et je découvre en même temps que j'avance à tâtons...

    EDIT: en fait, il suffirait que j'intègre les .lib, .a et autres au projet pour qu'il compile et que je n'ai plus à m'embêter avec tous les headers?

  9. #9
    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
    Citation Envoyé par moi
    Pourquoi récupérer les sources et non la version compilée de la bibliothèque ?
    Fallait le dire dés le début que tu voulais modifier tes trames USB

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Si j'avais simplement besoin de l'utiliser sans rien modifier, j'aurais déjà fini
    Double clic sur l'exécutable et hop, plus qu'à suivre la procédure! (qui fonctionne très bien d'ailleurs). Mais non, c'est plus marrant de mettre les doigts dans le cambouis!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par moi
    Il ne trouvait pas ntifs et wdm.
    Il n'en tenait pas compte lorsque je mettais ces fichiers dans le dossier du projet et que j'écrivais #include "ntifs.h" et #include "wdm.h"
    Mais en mettant les fichiers dans le dossier de VC++, et que j'écris #include <ntifs.h> ça fonctionne...

    Une raison particulière? Je ne comprends pas pourquoi d'un côté ça fonctionne et pas de l'autre.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    J'avance à tâtons...

    Normalement, j'ai tous les fichiers nécessaires pour pouvoir compiler.
    J'ai des erreurs dans les fichiers ntddk.h et libusb_dyn.c
    (les warnings, on verra ensuite non?)

    Dans ntddk.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    //....tout pleins de lignes de code (plus de 10000)
     
    #ifdef __cplusplus
    }
    #endif
    Il me souligne extern et lorsque je place le curseur dessus, j'ai le message "Erreur: Avertissement PCH: La fin de l'en-tête ne peut pas se situer dans une macro ou un bloc #if. Aucun fichier PCH Intellisense n'a été généré"
    Je n'ai pas touché à la syntaxe et elle me semble correcte. Je ne comprends donc pas pourquoi j'ai ce message.

    Le reste des erreurs concernerait des erreurs de syntaxe:

    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11835): error C2016: C requiert qu'un struct ou une union possède au moins un membre
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11835): error C2061: erreur de syntaxe*: identificateur 'PDRIVER_MCA_EXCEPTION_CALLBACK'
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11838): error C2059: erreur de syntaxe*: '}'
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11904): error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'CmcLog'
    En rapport avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct _MCA_DRIVER_INFO {
        PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback;
        PKDEFERRED_ROUTINE             DpcCallback;
        PVOID                          DeviceContext;
    } MCA_DRIVER_INFO, *PMCA_DRIVER_INFO;
    C'est ça pour pas mal de typedef struct, j'imagine que c'est le même problème à chaque fois.

    Etant donné que je n'ai pas touché au code, mon compilateur serait mal réglé?

    EDIT: le dernier extrait de code se trouve dans le extern C, ça a peut-être un lien

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Un typedef crée un nom de type, et apparemment, pas plusieurs

    Essaye de décompresser les définitions:
    ;

    Il faudrait un typedef pour chaque type défini, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct _MCA_DRIVER_INFO {
        PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback;
        PKDEFERRED_ROUTINE             DpcCallback;
        PVOID                          DeviceContext;
    } MCA_DRIVER_INFO;
    typedef MCA_DRIVER_INFO *PMCA_DRIVER_INFO;
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Je viens de mettre en pratique ton idée et...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11835): error C2016: C requiert qu'un struct ou une union possède au moins un membre
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11835): error C2061: erreur de syntaxe*: identificateur 'PDRIVER_MCA_EXCEPTION_CALLBACK'
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11838): error C2059: erreur de syntaxe*: '}'
    c:\program files\microsoft visual studio 10.0\vc\include\ntddk.h(11839): error C2143: erreur de syntaxe*: absence de '{' avant '*'
    Vu que j'utilise des fichiers du WDK, Visual Express arrive à les prendre "normalement"?
    Je trouve assez surprenant que des fichiers fait pour Windows me donne autant d'erreurs sans qu'on y touche

  15. #15
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    étrange en effet.

    As-tu vérifié que tu compiles bien en mode C, et pour du 32bits et le bon type de Windows (XP, Vista, 7, 8)?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Pour configurer le compilateur, c'est bien dans Projet->Propriétés-> C/C++ ?
    Idiot mais je ne retrouve pas où c'est

  17. #17
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Aucune idée … j'utilise gcc en ligne de commande sur mon linux

    Cherche du coté des options de compilateur
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  18. #18
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Compilation C Visual Studio

    Avec VS, il y a des TONNES et des TONNES d'options à choisir en cliquant...
    Tout se trouve en effet dans la fenêtre que tu cites...
    Mais pour retrouver la bonne option... bonne chance !

    Bref : par défaut, VS compile du C++ (et C++ arrive évidemment à gérer C, mais à sa façon), avec l'option /TC tu compileras du pur C.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Désolé pour la réponse tardive.

    J'ai donc forcé la compilation en C et... Absolument rien n'a changé
    Et Visual ne m'aimait pas? C'est peut-être ça le soucis en fait

  20. #20
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Hmmm...
    Déjà : si ton VS est assez récent, il te grisera les lignes de précompilation qu'il ne lira pas (utile pour ton extern par exemple ! ).
    Vérifie que ce qui est nécessaire n'est pas grisé du coup... (par exemple une des struct ou union)

    Ensuite : pour tes includes... il faut fouiner dans les propriétés du projet, et tu pourras laisser tes .h à côté.
    Le seul exemple de code Windows sous la main que j'ai est celui que j'ai posté ici (cf ma source WMI), dedans il y a des .h, des .c, et un fichier de projet VS2010.
    Je ne sais pas si ça peut t'aider, surtout que j'ai tout mis dans le même dossier...
    Mais je pense qu'il te suffit de créer des dossier src, includes dans l'arborescence de VS, d'y placer tes sources et headers, puis de modifier les propriétés du projet pour inclure les dossiers intéressants.
    Sur linux, la ligne serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -I./include/ -Wextra -Wall ./src/mon.c
    Ainsi, les includes locaux sont recherchés dans le dossier courant ET dans include !

    Peut être qu'une partie de tes erreurs viennent de là... :s
    Je ne pense pas que tu sois du genre à déclarer des structures vides...

    EDIT : la remarque de leternel page suivante est aussi une très bonne idée pour savoir où l'on en est, et repartir sur des bases saines.
    Et je viens de voir dans mon post... quand je dis :
    il te suffit de créer des dossier src, includes dans l'arborescence de VS
    Je parle bien de la petite arborescence dans l'IDE VS !
    Pas de créer des dossiers dans C:\Program Files\Visual Studio, etc...
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

Discussions similaires

  1. Compilation de GEOS sous Visual C++ 2005
    Par figuralegoric dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/09/2009, 21h23
  2. Recuperation date de compilation sous visual c++
    Par semenzato dans le forum MFC
    Réponses: 4
    Dernier message: 20/12/2005, 14h43
  3. Réponses: 7
    Dernier message: 27/09/2005, 21h40
  4. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52

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