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

Langages Discussion :

Utilisation d'une dll écrite en C et paramètre equivalent à un void** en vb.net


Sujet :

Langages

  1. #1
    Membre habitué
    Homme Profil pro
    automatisme
    Inscrit en
    Octobre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : automatisme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 54
    Points : 152
    Points
    152
    Par défaut Utilisation d'une dll écrite en C et paramètre equivalent à un void** en vb.net
    Bonjour,
    J'utilise un module CANfox (de chez sontheim) que je cherche à faire fonctionner avec un programme fait en vb.net. Il utilise une DLL (SIECA132.dll pour les plus curieux : https://www.sontheim-industrie-elekt...132_307_EN.pdf) écrite en C.
    J'ai déjà fais pas mal de recherche pour reussir à le faire fonctionner, j'ai lu les articles "Utiliser les fonctions de l'API en Visual Basic" et "Créer des DLL en C compatibles avec VB 6" disponible sur le site et j'ai recherché les topic qui traitaient de mon sujet.
    Au cours de mes recherches, j'ai vu que l'on pouvait utiliser les fonctions d'une DLL en la déclarant sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Private | Public] Declare Function | Sub publicname Lib "libname" [Alias " aliasname"] [([[ByVal] variable [As type] [,[ByRef] variable [As type]]...])] [As Type]
    sauf que ma fonction est déclarée de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long  canOpen(long l_netnumber, long l_mode, long l_echoon, long l_txtimeout, long l_rxtimeout, const char* c_Applicationname, const char* c_ReceiverEvent, const char* c_ErrorEvent, void** handle);
    et c'est là que le bât blesse, j'ai un void** en paramètre et je ne connais pas d'équivalent en VB...
    J'ai vu qu'il fallait adapter les types de variables en fonction de leur taille :
    VB 6 C / C++
    Integer bool, short
    Long int, long
    N/A unsigned short, unsigned int, unsigned long
    Single float
    Double Double
    J'ai regardé les autres déclarations pour essayer de trouver une piste mais mis à part qu'il (handle) est utilisé dans quasiment toutes les autres fonctions (sous la forme void*) comme paramètre.
    Est ce que quelqu'un connaitrait une solution pour resoudre mon problème de void**?

    Sinon je pensais à faire un petit sous programme en C (que je lance depuis mon appli VB) qui utilise cette DLL pour récupérer mes trames et les stocker dans un fichier pour les relire après avec mon appli (chose que je n'ai encore jamais essayer en VB).

    Si vous avez des pistes pour m'aider à avancer, je suis ouvert à toute proposition, merci d'avance
    PS : j'ai aussi envisagé de lâcher le VB et de repartir sur du C++.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    type delegate sub peut etre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Homme Profil pro
    automatisme
    Inscrit en
    Octobre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : automatisme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 54
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    désolé, je n'ai pas pu répondre plus tôt. J'ai regardé à quoi servait les 'delegate' (je suis plutôt débutant en VB.NET) et de ce que j'ai compris c'est que c'était comme les pointeurs de fonction en C++. Mon soucie est le paramètre void** de la fonction, pas la fonction ( j'ai peut-être mal compris).
    J'ai contourné mon problème en passant au C++ (je suis pas sûr qu'il y avait une solution en VB.NET)
    Je mets en résolu, merci pour ton aide.

    Cordialement Victor

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 24/03/2014, 08h35
  2. utilisation d'une dll écrite en C
    Par liliputien2002 dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 26/11/2008, 15h30
  3. [VC++] Utilisation d'une DLL écrite en C++ avec mingw.
    Par swirtel dans le forum Visual C++
    Réponses: 1
    Dernier message: 20/06/2007, 10h42
  4. Réponses: 6
    Dernier message: 21/06/2005, 21h45
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

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