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

VB 6 et antérieur Discussion :

[VB6]appel de dll en C avec paramètres


Sujet :

VB 6 et antérieur

  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 [VB6]appel de dll en C avec paramètres
    Salut,

    J'ai présentement une DLL en C qui contient des paramètres
    variables :

    DllExport short __stdcall NomEntree(int toto,...).

    les trois points représente les paramètres variable.

    Maintenant je dois appeller cette fonction en VB.

    Je pensais utiliser : Optional !!
    Public Declare Function ....(x2 As Int, Optional x4 As String) As Integer

    En fait, la DLL c s'exécute bien, mais lors du retour au VB
    j'ai des problèmes avec (Convention d'appel de DLL incorrecte).


    Merci de votre aide !

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    c'est une dll activex ou non :

    pourquoi tu mets des ....
    poste donc la ou les déclarations complètes, du premier coup, ca evitera déjà qu'on te demande des précisions sur le type des variables passées en paramètres
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    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
    Non ! ce n'est pas une dll activeX
    En fait, j'ai une DLL 32 bits en C: L'interface en VB6 appelle cette DLL.


    Voici exactement mon code C : Il recheche le paramètre optionnel
    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
    DllExport short __stdcall rtp_gen(int iTransit,...)
    {
      short iRetour= 0;
     
      char * arg3;
      va_list tag;
     
      // Vérification du paramêtre Optionnel
      va_start (tag, pstrMsgErr);
      arg3 = va_arg(tag, char *);
      va_end (tag);
      ......
      iRetour = rtp_gen_lib(iTransit, arg3);
      return iRetour;
    }

    Voici exactement ma déclaration en VB6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function rtp_gen Lib "C:\RTP_GEN.dll" (x1 As Int, Optionnal x2 As String) As Integer

    Merci !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Points : 55
    Points
    55
    Par défaut
    Bon déjà : Optional et non pas Optionnal mais bon c'est peut-être juste une erreur de recopie mais...

    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function rtp_gen Lib "C:\RTP_GEN.dll" (x1 As Integer, Optional x2 As Variant) As Integer
    Ca peut venir aussi que ce n'est pas un "integer" de VB que tu renvoi mais un "int" de C qui n'ont pas forcément les même plage de valeur je crois que l'équivalent du Int en C c'est Long en VB mais ça demande à être vérifié !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Points : 55
    Points
    55
    Par défaut
    oui je pense que ton souci c'est que la DLL renvoi un Int ((+-) 2 147 483 647) et que VB le récupère dans un integer ((+-)32767) donc ta déclaration ça doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function rtp_gen Lib "C:\RTP_GEN.dll" (x1 As Long, Optional x2 As String) As Long
    Je crois !

  6. #6
    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
    .... J'avais déjà essayé et c'est vrai concernant le "long"


    mais, j'ai le même problème
    je crois que le problème ici c'est qu'il est impossible
    d'avoir un DLL C avec des paramètres variables ..

    je vais poser la question sur le forum "C"


    Merci !

Discussions similaires

  1. [Débutant] Appel d'une procédure stockée avec paramètres
    Par Bakkach dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/10/2012, 17h41
  2. Appel d'un second programme avec paramètre
    Par atum25 dans le forum C++
    Réponses: 2
    Dernier message: 12/06/2012, 09h36
  3. Appel d'une store proc avec paramètres
    Par mcdotta dans le forum Access
    Réponses: 8
    Dernier message: 22/05/2007, 20h30
  4. Appeler une Dll ActiveX VB avec C++
    Par alexorel dans le forum C++
    Réponses: 1
    Dernier message: 06/09/2006, 16h56
  5. Réponses: 4
    Dernier message: 09/02/2006, 17h22

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