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 :

Fonction définie après une priorité ? ? ?


Sujet :

C

  1. #1
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Fonction définie après une priorité ? ? ?
    Bonjour , je crée en ce moment une DLL regroupant un nombre important de fonctions mathématiques pouvant servir du CP à la seconde, pour l'instant lorsque je compile, hé bien ca compile mais il me met mon compilo me met quand même ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    samsoft_maths.c:108: warning: function 'ss_volume_cone_revolution' is defined after prior declaration as dllimport: attribute ignored
    samsoft_maths.c:110:2: warning: no newline at end of file
    Linking dynamic library: samsoft_maths.dll
    Creating library file: libsamsoft_maths.a
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 17 warnings
    Le "warning" est présent pour toutes les fonctions de ma dll (c.f : fichier.c)

    fichier .h
    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
    /*
    Fichier : samsoft_maths.h
    Auteur : Samy Hocine (SamSoft) http://www.samsoft.ift.fr ; samyhocine@hotmail.fr
    Date : Mercredi 4 fervrier
    Description : None
    Licence : GNU/GPL
    Information : ss ou SS veut dire SamSoft
    */
     
    #ifndef H_TC_SAMSOFT_MATHSDLL_20070214181222
    #define H_TC_SAMSOFT_MATHSDLL_20070214181222
     
    #ifdef SAMSOFT_MATHSDLL_BUILD
    #define SAMSOFT_MATHSDLL_API __declspec(dllexport)
    #else
    #define SAMSOFT_MATHSDLL_API __declspec(dllimport)
    #endif
     
    extern const double PI;
     
    double SAMSOFT_MATHSDLL_API ss_carre(double a);
    double SAMSOFT_MATHSDLL_API ss_cube(double a);
    double SAMSOFT_MATHSDLL_API ss_perimetre_cercle(double r);
    double SAMSOFT_MATHSDLL_API ss_aire_cercle(double r);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_equi(double a);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_rect(double b, double c);
    double SAMSOFT_MATHSDLL_API ss_aire_rectangle(double l, double m);
    double SAMSOFT_MATHSDLL_API ss_aire_carre(double a);
    double SAMSOFT_MATHSDLL_API ss_aire_parallelogramme(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_losange(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_trapeze(double a, double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_sphere(double r);
    double SAMSOFT_MATHSDLL_API ss_volume_pyramide(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_tetraedre(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_cone_revolution(double r, double h);
     
    #endif
    /*
    Fichier : samsoft_maths.h
    Auteur : Samy Hocine (SamSoft) http://www.samsoft.ift.fr ; samyhocine@hotmail.fr
    Date : Mercredi 4 fervrier
    Description : None
    Licence : GNU/GPL
    Information : ss ou SS veut dire SamSoft
    */
     
    #ifndef H_TC_SAMSOFT_MATHSDLL_20070214181222
    #define H_TC_SAMSOFT_MATHSDLL_20070214181222
     
    #ifdef SAMSOFT_MATHSDLL_BUILD
    #define SAMSOFT_MATHSDLL_API __declspec(dllexport)
    #else
    #define SAMSOFT_MATHSDLL_API __declspec(dllimport)
    #endif
     
    extern const double PI;
     
    double SAMSOFT_MATHSDLL_API ss_carre(double a);
    double SAMSOFT_MATHSDLL_API ss_cube(double a);
    double SAMSOFT_MATHSDLL_API ss_perimetre_cercle(double r);
    double SAMSOFT_MATHSDLL_API ss_aire_cercle(double r);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_equi(double a);
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_rect(double b, double c);
    double SAMSOFT_MATHSDLL_API ss_aire_rectangle(double l, double m);
    double SAMSOFT_MATHSDLL_API ss_aire_carre(double a);
    double SAMSOFT_MATHSDLL_API ss_aire_parallelogramme(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_losange(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_aire_trapeze(double a, double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_sphere(double r);
    double SAMSOFT_MATHSDLL_API ss_volume_pyramide(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_tetraedre(double b, double h);
    double SAMSOFT_MATHSDLL_API ss_volume_cone_revolution(double r, double h);
     
    #endif
    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
    /*
    Fichier : samsoft_maths.c
    Auteur : Samy Hocine (SamSoft) http://www.samsoft.ift.fr ; samyhocine@hotmail.fr
    Date : Mercredi 4 fervrier
    Description : Dll incluant divers fonctions mathématiques
    Licence : GNU/GPL
    Information : ss ou SS veut dire SamSoft
    */
     
    #include "samsoft_maths.h"
     
    const double PI = 3.1415926535897932384626433832795;
     
    double SAMSOFT_MATHSDLL_API ss_carre(double a)
    {
        return a*a;
    }
     
    double SAMSOFT_MATHSDLL_API ss_cube(double a)
    {
        return a*a*a;
    }
     
    double SAMSOFT_MATHSDLL_API ss_perimetre_cercle(double r)
    {
        return 2*PI*r;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_cercle(double r) //r = rayon//
    {
        return PI*r*r;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_triangle(double b, double h) //triangle quelconque, b = base et h = hauteur//
    {
        return (b*h)/2;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_equi(double a) //triangle équilateral, a est la longeur d'un côté//
    {
     
        int increment;
        double resultat;
        double an;
        double an1;
     
        if (a >= 0)
        {
            an=a;
            for (increment=0;increment<8;increment++)
            an1=(an+(a)/an)/2;
            an==an1;
            resultat==an1;
            return resultat;
        }
        else if (a < 0)
        {
            return -0.00000;
        }
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_triangle_rect(double b, double c) //triangle rectangle, b et c sont les longeurs de deux côtés autres que l'hypothénuse//
    {
        return (b*c)/2;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_rectangle(double l, double m)//l = longeur ; m = largeur/
    {
        return l*m;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_carre(double a)//a étant la longeur d'un côté//
    {
        return a*a;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_parallelogramme(double b, double h)//b étant la base et h la hauteur//
    {
        return b*h;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_losange(double b, double h)//b étant la base et h la hauteur//
    {
        return (b*h)/2;
    }
     
    double SAMSOFT_MATHSDLL_API ss_aire_trapeze(double a, double b, double h)//b étant la base et h la hauteur et a la longeur du côté du dessus//
    {
        return 1/2*(a+b)*h;
    }
     
    double SAMSOFT_MATHSDLL_API ss_volume_sphere(double r)//r étant le rayon de la sphère//
    {
        return 4*PI*r*r;
    }
     
    double SAMSOFT_MATHSDLL_API ss_volume_pyramide(double b, double h)//b est la base d'aire et h la hauteur//
    {
        return 1/3*b*h;
    }
     
    double SAMSOFT_MATHSDLL_API ss_volume_tetraedre(double b, double h)//b est la base d'aire et h la hauteur//
    {
        return 1/3*b*h;
    }
     
    double SAMSOFT_MATHSDLL_API ss_volume_cone_revolution(double r, double h)//r est le rayon de la base qui est un cercle et h la hauteur//
    {
        return 1/3*PI*r*r*h;
    }
    Quelle est la solution à mon problème ?

    Merci,

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Si ça se produit alors que tu compiles la dll c'est qu'il y a un dllimport d'utilisé au lieu d'un dllexport.
    Tu as bien SAMSOFT_MATHSDLL_BUILD de défini ?
    A quoi ressemble la ligne d'invocation de gcc ?

    MAT.

  3. #3
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Réponse
    Je pars en vacance tout de suite (là maintenant) lol, je vais donc vous envoyer ces réponses dans environ 10 heures (et oui "le chemin est long mais la route est libre" [FRAMASOFT])

    Excusez moi....

    Merci,

  4. #4
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Réponse
    Dans projet / option du projet / linker : j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -D SAMSOFT_MATHSDLL_BUILD
    Dans Compiler / #define : j'ai :

    C'est tout...

    Quelle est la solution à mon problème ?

    Merci,

  5. #5
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut réponse
    If (attend depuis longtems une réponse == True) Then
    "little up "
    Endif

    [petit code VB tout sympa]


  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Ah c'est pas gcc ? Au temps pour moi...
    Essaye de mettre SAMSOFT_MATHSDLL_BUILD dans "Compiler / #define".

    Le but est que lorsque tu compiles la dll SAMSOFT_MATHSDLL_API vaille __declspec(dllexport) et que lorsque tu l'utilises ça vaille __declspec(dllimport) : quand tu compiles tu exportes les symboles et quand tu l'utilises tu les importes.

    Ah au fait tu as changé le code dans le premier message espèce de fourbe

    MAT.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par _SamSoft_
    If (attend depuis longtems une réponse == True) Then
    "little up "
    Endif

    [petit code VB tout sympa]

    Sympa, peut-être, mais syntaxiquement incorrect : restes-en au C pour l'instant

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par _SamSoft_
    Dans projet / option du projet / linker : j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -D SAMSOFT_MATHSDLL_BUILD
    Dans Compiler / #define : j'ai :

    C'est tout...

    Quelle est la solution à mon problème ?

    Merci,
    Sous Code::Blocks, et probablement aussi sous Dev-C++, il faut définir SAMSOFT_MATHSDLL_BUILD sous Project/Build Options/Compiler/#defines. Là, tu écris -DSAMSOFT_MATHSDLL_BUILD ou simplement SAMSOFT_MATHSDLL_BUILD (Il s'agit là d'une option qui concerne le préprocesseur. Il n'y a aucune logique à passer cette option à l'éditeur de liens). Et c'est tout, ça devrait fonctionner.

    N.B. BUILD_DLL ne te sert à rien ici, c'est SAMSOFT_MATHSDLL_BUILD dont tu as besoin.

    Thierry

  9. #9
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Réponse
    Problème RESOLU, Merci à TOUS !

    En fait comme l'a dis beaucoup de gens sur ce sujet, le problème est que je devais remplacer dans #option du projet #define : BUILD_DLL par SAMSOFT_MATHSDLL_BUILD !

    Merci encore !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction définie sur une sphère
    Par Casimirs dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/07/2012, 10h09
  2. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  3. [AJAX] executer une fonction javascript apres une reponse AJAX
    Par katie.gillot dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2008, 17h39
  4. Cumul des jours ouvrables d'après une fonction
    Par molene34 dans le forum Access
    Réponses: 11
    Dernier message: 14/03/2006, 22h40
  5. Réponses: 6
    Dernier message: 24/02/2005, 09h44

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