Appel dll [Résolu]

Signaler
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010
-
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010
-
Bonjour à tous,

je souhaite utiliser en VB.Net un dll qui a été apparament dévelopé en C.

tout d'abord j'aurai voulu savoir si on pouvait utiliser un dll depuis n'importe quel langage de programmantion ??? Par exemple, est-ce qu'un dll peut être aussi bien appelé depuis un code C ou VB ou C++ ... ?

Ensuite, dans mon cas j'utilise la délcaration suivante :
Declare

Function OpenCleware
Lib "I:\Documents and Settings\Propriétaire\Bureau\Nouveau dossier\USBaccess.dll" ()
As
Long
Mais lorsque je lance mon programme, il me dit que le point d'entrée n'existe pas. Pourtant la fonction OpenCleware 
existe bien dans la documentation de mon dll :( Vous savez pourquoi ???

Merci de partager le savoir. Il n'y a pas de vol, juste de l'échange.

11 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Je viens de jeter un oeil sur le fichier h de la dll, à part la fonction d'init, quasi tout le reste prend des pointeurs d'interface en param. A part EbartSoft ou autre trapeziste de haut vol dans ce genre, je déconseille de jouer avec. Il te faudra passer par les OCX ou te mettre au C.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Va voir avec depends.exe (se trouve par google) si la fonction est exportée.

Utilisable par tous langages si ccorrectement exporté en stdcall.

ciao...
BruNews, MVP VC++
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Function OpenCleware Lib "I:\Documents and Settings\Propriétaire\Bureau\Nouveau dossier\USBaccess.dll" () AsLong



et aussi : je crois bien avoir lu plusieurs fois (de Casy) que ce typage (long) devait être transformé en Integer pour VB.Net...
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010

C'est marrant, j'étais en train de la faire :)

Alors voici les résultats, je retrouve ma fonction sous les noms suivants :

int CUSBaccess::OpenCleware(void)
[mailto:_FCWOpenCleware@4 _FCWOpenCleware@4]

ça veut dire quoi ?

Merci de partager le savoir. Il n'y a pas de vol, juste de l'échange.
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010

@ jmfmarques : en fait c'est le type int que j'ai mis en long comme prescrit

Merci de partager le savoir. Il n'y a pas de vol, juste de l'échange.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
J'imagine que la déclaration que tu donne a été trouvé dans une documentation qui ne fait pas référence explicitement à la plateforme .Net. Dans ce cas cette déclaration est probablement destinée à des langages Win32 et non .Net.

La différence entre Win32 et .Net est essentiellement (pour ce qui nous interresse ici) le changement des types de variables.

Ainsi un long en Win32 devient un Integer (ou Int32) en .Net

Essaye donc de corriger le type de la valeur de retour de la fonction en mettant un Integer à la place

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010

En fait j'avais déjà changer le type, puisqu'au départ il s'agissait d'un type int que j'ai donc mis en long.

Mais que je le mette en integer ou en long mon problème reste identique :(

Par contre si je change mon appel comme ça :
Declare

Function OpenCleware
Lib "I:\Documents and Settings\Propriétaire\Bureau\Nouveau dossier\USBaccess.dll"
Alias "_FCWOpenCleware@4" ()
As
Integer

Il ne met plus le problème de point d'entrée mais il écrit : " OpenCleware Exception runtime levée : System.NullReferenceException - La référence d'objet n'est pas définie à une instance d'un objet. 
"

C'est bon signe ou pas ?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Après quelques recherches sur le net, il semblerait que ta <layer id= "google-toolbar-hilite-3" style="background-color: Cyan; color: black;">dll</layer> ne soit pas utilisable directement, tout au moins en VB. Il semblerait qu'il faille passer par les ocx livrés avec.

Ceci dit la seule documentation que j'ai trouvé est en allemand semble-t-il, et je ne comprend rien à l'allemand. Je suis donc peut-etre passé à coté d'une info importante

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010

C'est bien ce dont j'avais peur, car les OCX n'offre pas autant de possibilités que le dll :(
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
C'est pas faux

E.B.
Messages postés
25
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
8 octobre 2010

Merci à vous !!