Appel dll

Résolu
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010 - 16 juin 2007 à 14:16
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010 - 17 juin 2007 à 08:59
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 juin 2007 à 19:38
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++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 juin 2007 à 14:35
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++
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 juin 2007 à 14:51
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...
0
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010
16 juin 2007 à 14:52
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010
16 juin 2007 à 14:53
@ 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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 juin 2007 à 14:56
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
0
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010
16 juin 2007 à 15:06
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 ?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 juin 2007 à 15:30
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
0
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010
16 juin 2007 à 17:04
C'est bien ce dont j'avais peur, car les OCX n'offre pas autant de possibilités que le dll :(
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
16 juin 2007 à 19:58
C'est pas faux

E.B.
0
Vexplore Messages postés 25 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 8 octobre 2010
17 juin 2007 à 08:59
Merci à vous !!
0
Rejoignez-nous