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
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
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
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
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
7668
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
41
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
41
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