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 :

Probleme définition librairie


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut Probleme définition librairie
    Bonjour,

    je cherche a appeler mes librairie suivant OS.

    Mais sa ne marche pas...


    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
    #if os==WINDOWS
     
    #include <shlwapi.h> // Pour utiliser la fonction PathFindFileName
    #include <windows.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <winsock2.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __WIN__
    #include <sstream>
     
     
     
    #endif
     
    #if os==UNIX
    #include <linux.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __UNIX__
    #include <sstream>
    #endif


    Est il possible par la suite dans le programme de dire si c'est windows utilisé cette partie de code et inversement?



    Pouvez-vous m'indiquer la marche a suivre s'il vous plait
    Cordialement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    essaye
    Je ne suis pas sur, mais j'ai l'impression que j'ai vu ça quelque part

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    j'ai essayé mais toujours les même erreur.


    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
    #if Win32
     
    #include <shlwapi.h> // Pour utiliser la fonction PathFindFileName
    #include <windows.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <winsock2.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __WIN__
    #include <sstream>
     
     
     
    #endif
     
    #if Unix
     
    #include <linux.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __UNIX__
    #include <sstream>
    #endif
    Cordialement

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    C'est normal, je me suis trompé.
    J'ai cherché un peu et voilà ce que j'ai trouvé :

    Dans un fichier de config tu définis ton environnement comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #if defined(_WINDOWS) && !defined(WINDOWS)
    #define WINDOWS
    #endif
    et dans ton code tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef WINDOWS
    bla bla bla
    #endif
    les macros sont différents selon les OS, pour win32 par exemple, il y a _WIN32 et _WIN32_.
    J'espère que c'est juste cette fois.
    bon courage

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Tu devrais trouver ton bonheur ici

    [EDIT] Grilled

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    merci pour vos réponse.

    Voici ma déclaration :

    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
    #if defined(__WINDOWS__) && !defined(_WIN32)
    #define WINDOWS
    #include <shlwapi.h> // Pour utiliser la fonction PathFindFileName
    #include <winsock2.h>
    #include <windows.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <winsock2.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __WIN__
    #include <sstream>
    #endif
     
    #if defined(__unix__) && !defined(__unix)
    #define UNIX
    #include <linux.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __UNIX__
    #include <sstream>
    #endif

    Je pense qu'elle est fausse car lors de la compilation, le compilateur me dit que rien est déclarer.

    exemple :

    `SOCKADDR' undeclared (first use this function)

    j'ai aussi essayer en remplacent les && par des ||
    dans la ligne :
    #if defined(__unix__) && !defined(__unix)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    ça dépend de ce que tu veux faire, à mon avis, si tu travaille avec win32 voilà la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #if (defined(_WIN32)||defined(_WIN32_)) && !defined(WIN32) // Cette derniere juste pour être sur que tu n'as pas défini WIN32 deux fois.
    #define WIN32
    #endif
    La tu as défini ton environnement WIN32, pour l'utiliser après il faut que tu rajoute cette ligne de code avant ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef(WIN32)
    ...
    #endif
    C'est la méthode qu'on utilise dans notre application et ça marche.

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    merci de ton aide,

    il ne me dit plus que tous n'est pas déclaré.

    il ne reste plus que cette erreur:

    macro names must be identifiers

    je pense que ça vient de cette ligne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #if (defined(_WIN32)||defined(_WIN32_)) && !defined(WIN32)

    Cordialement

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    Je pense qu'il ne reconnais pas _WIN32_,
    enlève le, et réessaye.

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    j'ai enlevé ce que tu m'a dit

    voici le code actuel :

    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
    #if defined(_WIN32) && !defined(WIN32)
    #define WIN32
    #include <shlwapi.h> // Pour utiliser la fonction PathFindFileName
    #include <winsock2.h>
    #include <windows.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <winsock2.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    /*#define __WIN__*/
    #include <sstream>
    #endif
     
    #if defined(__unix__) && !defined(UNIX)
    #define UNIX
    #include <linux.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #define __UNIX__
    #include <sstream>
    #endif
     
     
    #ifdef(WIN32)
     
     
     
     
    __int64 __stdcall taillefichier(char *pszfl)
    {
        LARGE_INTEGER r;
        WIN32_FIND_DATA wfd;
        HANDLE hfl = FindFirstFile(pszfl, &wfd);
        if(hfl == INVALID_HANDLE_VALUE) return 0;
        FindClose(hfl);
        r.HighPart = wfd.nFileSizeHigh;
        r.LowPart = wfd.nFileSizeLow;
        return r.QuadPart;
    }
     
    int main(int argc, char *argv[])
    {
     
    ......
     
    }
     
    #endif
    l'erreur se fait sur cette ligne :

    Voici l'erreur:

    macro names must be identifiers
    Cordialement

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    Et si tu enlève les parenthèses :

    #ifdef WIN32

    Je ne suis pas sur que ça va changer grand chose, mais je ne vois pas le problème.

  13. #13
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    si j'enlève les parenthésé sa revient comme avant.

    le compilateur me fait un multitude erreur.


    Merci de m'aider

    PS: si je met que les librairies windows sans aucun defined, le code compile.


    Cordialement

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    si j'enlève les parenthésé sa revient comme avant.

    le compilateur me fait un multitude erreur
    Tu es sur que tu travaille avec WIN32 ?

    car si non tu peux utiliser la macro de WINDOWS comme cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #if defined(_WINDOWS) && !defined(WINDOWS)
    #define WINDOWS
    #endif
    et après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef WINDOWS
    ...
    #endif

  15. #15
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    je viens essayer, mais toujours la même erreur.

    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
    #if defined(_WINDOWS) && !defined(WINDOWS)
    #define WINDOWS
    #include <shlwapi.h> // Pour utiliser la fonction PathFindFileName
    #include <winsock2.h>
    #include <windows.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <winsock2.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    /*#define __WIN__*/
    #include <sstream>
    #endif
    Toujours erreur sur cette ligne:

    macro names must be identifiers
    Cordialement

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    et avec

    #ifdef WINDOWS

    sans parenthèses.

  17. #17
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    tu est un genie sa compile sans aucun probléme.


    j'ai une question qui me turlupine.


    si dans mon code j'ai une partie qui marche pour windows et unix,

    la syntaxe serai comme ceci :

    ??

    Merci encore de ton aide

    Cordialement

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    Si tu as que ces deux OS, bah ne fait rien, sinon tu peux ajouter une macro pour les deux, style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #if (defined(_WINDOWS) ||defined(_UNIX)) && !defined(WINUX) //j'ai mis _UNIX juste à titre d'exemple, je ne sais les macros qu'il faut ajouter pour UNIX
    #define WINUX
    #endif
    et après tu fais comme avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef WINUX
    ...
    #endif
    Bon courage

  19. #19
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Pour Unix dans le lien qui m'a était donnée précédemment :

    http://predef.sourceforge.net/preos.html#sec24


    il me dise:

    Unix Environment
    Type Macro
    Identification __unix__
    Identification __unix
    quand je mes __unix__ ou __unix ou _unix ou encore _unix_:

    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
    #if defined(_UNIX) && !defined(UNIX)
    #define UNIX
    #include <linux.h>
    #include <tchar.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <time.h>
    #include <cstdlib>
    #include <fstream>
    using namespace std;
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <string>
    #include <limits>
    #include <MYSQL/mysql.h>
    #include <sstream>
    #endif
    le compilateur me dit :

    [Linker error] undefined reference to `WinMain@16'

    meme chose quand j'utilise ceci :

    U/Win Environment
    Type Macro
    Identification _UWIN

    PS: je compile avec DEV C++ sous windows


    Cordialement

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Points : 85
    Points
    85
    Par défaut
    essaye avec la macro
    linux

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. OpenGL + DevC++ : Probleme de librairie
    Par gids01 dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2005, 13h05
  2. probleme de librairie avec Dev-C++
    Par Miksimus dans le forum Dev-C++
    Réponses: 2
    Dernier message: 12/10/2005, 12h21
  3. <GLADE + C++> Probleme de Librairies
    Par debutanteVB.NET dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 30/09/2005, 12h40
  4. Probleme définition d'index sous Paradox
    Par zinaif dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/06/2005, 10h38
  5. [Link] Probleme de librairies...
    Par k'n1 dans le forum C++
    Réponses: 3
    Dernier message: 22/02/2005, 05h40

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