OVH Cloud OVH Cloud

Appel de fonctions C

6 réponses
Avatar
Christophe Jacquelin
Bonjour,

Comment faire appel à des fonctions en C qui sont dans une librairie DLL
à partir d'un programme VB ?

Merci,
Christophe,

6 réponses

Avatar
ng
En les déclarant ainsi par exemple :

Public Declare Function NomLocal Lib "MaDll.Dll" Alias "NomFonctionDansDll"
(Parametre As Long) As Long

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Christophe Jacquelin wrote:
Bonjour,

Comment faire appel à des fonctions en C qui sont dans une librairie
DLL à partir d'un programme VB ?

Merci,
Christophe,


Avatar
Phil
Oui, à condition que les fonctions C soient déclarées et exportées en accord
avec les normes VB...Je ne sais plus tout ce qu'il faut exactement, mais
c'est des déclarations du genre extern cdecl...etc..
Je peux retrouver çà quelque part, mais je suis sûr que d'autres te diront
çà mieux que moi.

Phil

"ng" a écrit dans le message de
news:
En les déclarant ainsi par exemple :

Public Declare Function NomLocal Lib "MaDll.Dll" Alias


"NomFonctionDansDll"
(Parametre As Long) As Long

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Christophe Jacquelin wrote:
> Bonjour,
>
> Comment faire appel à des fonctions en C qui sont dans une librairie
> DLL à partir d'un programme VB ?
>
> Merci,
> Christophe,




Avatar
Zoury
> Oui, à condition que les fonctions C soient déclarées et exportées en


accord
avec les normes VB...Je ne sais plus tout ce qu'il faut exactement, mais
c'est des déclarations du genre extern cdecl...etc..
Je peux retrouver çà quelque part, mais je suis sûr que d'autres te diront
çà mieux que moi.



yep. Il s'agit du standard __stdcall..

// C++
int _stdcall my_function(char *c, int i1, int *i2);

' VB
Private Declare Function execute _
Lib "myActiveX.dll" _
( _
ByVal c As String, _
ByVal i1 As Long, _
ByRef i2 As Long _
) As Long


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Phil
Merci. Zoury.. Ca m'a évité de chercher ce soir... (-;

Phil

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
> Oui, à condition que les fonctions C soient déclarées et exportées en
accord
> avec les normes VB...Je ne sais plus tout ce qu'il faut exactement, mais
> c'est des déclarations du genre extern cdecl...etc..
> Je peux retrouver çà quelque part, mais je suis sûr que d'autres te


diront
> çà mieux que moi.

yep. Il s'agit du standard __stdcall..

// C++
int _stdcall my_function(char *c, int i1, int *i2);

' VB
Private Declare Function execute _
Lib "myActiveX.dll" _
( _
ByVal c As String, _
ByVal i1 As Long, _
ByRef i2 As Long _
) As Long


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous




Avatar
Zoury
... même si j'ai posté une bétise? :OD

int _stdcall my_function(char *c, int i1, int *i2);

' VB
Private Declare Function my_function _
Lib "myActiveX.dll" _
( _
ByVal c As String, _
ByVal i1 As Long, _
ByRef i2 As Long _
) As Long



aaah, beaucoup mieux!!

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Phil
Il était tard...(-;

Phil

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
... même si j'ai posté une bétise? :OD

> int _stdcall my_function(char *c, int i1, int *i2);
>
> ' VB
> Private Declare Function my_function _
> Lib "myActiveX.dll" _
> ( _
> ByVal c As String, _
> ByVal i1 As Long, _
> ByRef i2 As Long _
> ) As Long

aaah, beaucoup mieux!!

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous