begin process at 2012 02 14 12:48:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Utiliser une dll C sous VB6 (pb de conversion de type)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utiliser une dll C sous VB6 (pb de conversion de type)

mercredi 22 mars 2006 à 22:05:34 | Utiliser une dll C sous VB6 (pb de conversion de type)

sophie75

Bonjour,
Je souhaite utiliser une dll qui a été écrite en C, dans un programme VB. Grâce à la fonction Lib, j'arrive à appeler certaines méthodes de cette dll, mais une méthode me pose encore problème: celle-ci prend en paramètres 2 pointeurs, sur chaîne de caractères et sur long. Si quelqu'un pouvait me dire comment redéclarer la fonction sous VB çà me sauverait !!

Voici le prototype de la Fonction C:
Function maFonction( long* taillemessage, char* message)

Voilà comment j'ai essayé de la déclarer sous VB mais çà ne marche pas, il me met une erreur "types incompatibles avec la dll" au moment où je fais appel à la fonction
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
)

mercredi 22 mars 2006 à 22:42:07 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

Titi035

ça donne quoi comme erreur?


mercredi 22 mars 2006 à 22:58:37 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

Titi035

oups, j'avais pas lu la fin.

=> une premiere piste sur le retour de ta fontion :
Function maFonction( long* taillemessage, char* message)

Donc en vb, tu devrais avoir quelque chose comme
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
)as Function    (à toi de voir le type compatible VB6..)



jeudi 23 mars 2006 à 00:59:51 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

rvblog

Membre Club
Salut sophie, salut titi,

je'aimerais plutôt pour savoir ce qu'est Function dans ton proto C, une structure, un handle?
Et si la valeur de retour n'est pas indispensable, pas utile de la déclarer (dans VB).

ensuite pour le long*taillemessage, je mettrais ByVal taillemessage As Long.

enfin, fais voir l'appel, c'est lui qui déclenche l'erreur (et si tu fais voir l'appel, fais voir aussi les déclarations des participants à l'appel).

a+

rvblogn
Je veux ton bien... et je l'aurais

jeudi 23 mars 2006 à 12:15:37 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

sophie75

Merci pour votre aide
Je vais essayer d'être un peu plus précise, j'avais en effet oublié le retour de la fonction

Fonction C:
public  int maFonction(long* taillemessage, char* message)

Fonction redéclarée en VB:
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
)
( J'ai aussi essayé de mettre taillemessage en byval, et message Byref mais toutes les combinaisons renvoient la même erreur)


Appel de la fonction en VB:
Dim iResultat as Integer
iResultat = maFonction(4, "toto")

Resultat:
Message d'erreur: Convention d'appel de la dll incorrect
jeudi 23 mars 2006 à 13:01:40 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

sophie75

Décidement... j'ai de nouveau oublié le paramètre de retour dans ma fonction VB. Il s'agit donc bien de:

Fonction redéclarée en VB:
Private Declare Function maFonction _
Lib "madll.dll" ( _
ByRef taillemessage As Long, _
ByVal message As String _
) as Integer

Appel de la fonction en VB:
Dim iResultat as Integer
iResultat = maFonction(4, "toto")

Par contre, je viens de m'apercevoir qu'en mettant les 2 paramètres de la fonction en "ByVal" et en appelant la fonction comme ci-dessus, VB plante carrément et affiche le message:
Visual Basic a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.



jeudi 23 mars 2006 à 14:44:25 | Re : Utiliser une dll C sous VB6 (pb de conversion de type)

rvblog

Membre Club
Sophie,

essaies de lui rajouter un vbNullChar à l'appel, à la fin de la chaine.

rvblogn
Je veux ton bien... et je l'aurais



Cette discussion est classée dans : fonction, vb, long, dll, utiliser


Répondre à ce message

Sujets en rapport avec ce message

probleme acces fonction dans dll vb à partir power builder [ par kali ] Bonjour, j'ai créé une dll activex à l'aide de vb. Celle ci contient ue seule fonction. Je souhaiterait pouvoir appeler cette fonction à partir d'une Utiliser la DLL d'un autre programme. [ par Lolux ] Bonjour,Je souhaite créer un application qui utilise une DLL appartenant à un autre programme.J'ai bien la description de toutes les fonctions de la d DLL ActiveX en VB [ par LePtitE ] bonjour, j'ai besion de créer une dll en vb mais je vais l'utiliser dans un autre langagemon probleme, quand j'appelle une fonction de ma dll ca me di Pb d'utilisation de la fonction AvifileOpen en VB# [ par tlesol ] Bonjour a tous,J'ai un problème sur l'execution de la fonction AvifileOpen en VB#Le script est le suivant : Private Declare Sub AVIFileInit Lib "avifi prblm déclaration de DLL c++ en vb [ par cirrus ] voila, g fouillez partout sur les message mais g rien trouvez qui puisse m'aider donc j'écrit texto mon prblm :)j'appelle une fonction de ma dll fait DLL en VB Probleme de porté de fonction [ par Zlub ] Salut a tous, dite j'suis en train de dev une appli qui utilise une dll externe, et mon probleme c que je ne peut appelé la fonction dans mon appli, p appel d'une fonction dans une dll [ par FMatrix07 ] je ne vois pas trop comment faire si vous pouvez me donner un exemple concretpar exemple je veux utiliser la fontion CreateToolhelpSnapshot dans la dl Eviter d'utiliser VB6stkit.dll [ par PrgmDucal ] DucSalut !Y aurait-il un moyen de démarrer un programme VB sur un ordinateur n'ayant aucune des dll VB de base (surtout VB6stkit.dll).Je voudrais Fonction des DLL [ par jujeco ] Je débute dans la programmation en VB6. J'utilise des sources que je trouve sur ce site et je les décortiques pour les comprandre. En général tout vas Passage de string d'une DLL C++ a un prog VB (.NET) [ par playmo420 ] Bonjour Je souhaiterais passer une string d'une DLL c++ a un programme VB. Voila ma fonction dans la DLL : string _stdcall selectMom() { ostringstream


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales