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 379
    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 379
    Points : 41 573
    Points
    41 573
    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...

  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.

  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...

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    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é...

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