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 :

dll en C (avec Paramètre variable, optionnel) [Non suivi]


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut dll en C (avec Paramètre variable, optionnel)
    Salut à vous,

    Est-ce possible d'avoir un DLL en C avec des paramètres variables-optionel

    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
    DllExport short __stdcall rtp_gen(int x, ...)
    {  
      short iRetour= 0;
     
      char * arg3;
      va_list tag;
     
      // Vérification du paramêtre Optionnel
      va_start (tag, x);
      arg3 = va_arg(tag, char *);
      va_end (tag);
     
      .....
      iRetour = fonctionX(arg3);
     
      return iRetour;
     
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Hum... Je pense que oui, mais pas en __stdcall : Je crois bien qu'on ne peut avoir des ofnctions à nombre d'arguments variables qu'en __cdecl .

    PS: Si je peux me permettre un conseil, s'il y a plus d'un argument optionnel, prévoir une fonction équivalente prenant une va_list en paramètre... (comme printf() et vprintf()). D'ailleurs, la version "..." peut appeler la version va_list, alors que l'inverse n'est pas tellement possible...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Une autre possibilité est d'utiliser un équivalent des VARIANT (spécialité Microsoft ?) , c'est-à-dire définir, à l'aide d'une union et d'un sélecteur de type, un type de données incluant à peu près tout ce qu'on peut imaginer, ensuite on passe à la fonction un pointeur vers un tableau de ces données et le nombre d'éléments du tableau.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: dll en C (avec Paramètre variable, optionnel)
    Citation Envoyé par SerLab
    Est-ce possible d'avoir un DLL en C avec des paramètres variables-optionel
    A ma connaissance, ce n'est pas possible[1], ou alors avec des mot-clés spéciaux. Détails sur le forum "Développement Windows".

    ------------------------------------------------------------
    [1] Pourtant sprintf() est bien dans MSVCRT.DLL ... Mystère...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je viens de tester avec Visual 6 en __cdecl, ça marche.
    Et en supprimant le mot-clé __cdecl, ça marche aussi, puisque les fonctions sont en __cdecl par défaut.

    Par contre, un truc bizarre, c'est qu'en __cdecl, le nom de la fonction est exporté non-décoré (sans le underscore). Alors qu'en __stdcall, il est exporté décoré par défaut (avec le underscore, l'@ et le nombre d'octets de ses paramètres).
    Note: Ceci, c'est en exportation "par défaut" (__declspec(dllexport)) : Avec un fichier .def, on peut choisir au caractère près comment c'est exporté...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/12/2010, 17h10
  2. [XL-2003] RechercheV avec paramètre variable
    Par Gayzou dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/07/2010, 10h39
  3. appel fichier batchs avec paramètres variables
    Par staticx dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 21/08/2007, 08h04
  4. Requête avec paramètres variables
    Par dahu17 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/05/2007, 10h38
  5. [VB6]appel de dll en C avec paramètres
    Par SerLab dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/02/2006, 14h49

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