Accueil > Forum > > > > Appeler une fonction VB à partir de C++
Appeler une fonction VB à partir de C++
mardi 7 décembre 2004 à 09:11:41 |
Appeler une fonction VB à partir de C++

doggyk
|
Bonjour à tous! Voilà, je souhaiterais appeler une fonction VB à partir d'une DLL C++ (appelée auparavant par mon prog VB). En gros: Démarrage du prog Y en Visual Basic qui Appelle la fonction X appartenant à la DLL Z Puis, au cours de son éxécution la Fonction X de la Dll Z appelle la fonction W du prog Y. Je sais pas si c'est très clair... Bon, d'après mes premières investigations il y aurait peut-être une possibilité en envoyant à ma Dll l'adresse de la fonction à rappeler grâce à l'operateur AddressOf de VB. Le truc, c'est que j'ai lu cela, j'arrive à l'utiliser dans VB, mais j'ai pas trouvé d'exemples montrant comment le C++ se sert de l'adresse de cette fonction pour la rappeler. Mon problème se situe donc juste à appeler la fonction VB à partir de C++. Si quelqu'un a déjà eu à faire ce genre de bidouille je serais interressé par son aide! Merci d'avance. Doggyk.
|
|
mardi 7 décembre 2004 à 09:38:31 |
Re : Appeler une fonction VB à partir de C++

ShareVB
|
salut
pour pouvoir utiliser la fonction AddressOf, il faut que ta fonction W soit dans un module .bas, ensuite, il faut que tu la passe à ta fonction X de la dll Z. Dans cette dll, tu dois déclarer un pointeur de fonction en convention stdcall puis tu affectes l'adresse à ton pointeur avec : tafonctionW = adresse_fonction_W;
par contre, si tu veux un vrai code, il faudrait que tu donnes le prototype de ta fonction VB...
ShareVB
|
|
lundi 13 décembre 2004 à 10:47:30 |
Re : Appeler une fonction VB à partir de C++

doggyk
|
Salut! Merci pour ta réponse mais j'avoue ne pas réussir à la mettre en oeuvre totalement car j'ai un message d'erreur sur les conversions long to int qui apparaît. Plus précisément, voici un extrait des fonctions que j'utilise. Si tu as 2 minutes pour me conseiller.... Merci d'avance!
Fichier principal VB:
Private Declare Sub numerisation Lib "numerisation.dll" (AdresseFonction As Long, seuil As Integer)
Private Sub Command1_Click() numerisation AddressOf Analyse, 200 End Sub
Le module .bas: Public function Analyse(x As Integer, y As Integer) MsgBox "ok, ca marche! x=" & x & " y=" & y 'histoire de tester... ' ....... Analyse=1 End function
La partie importante de ma Dll:
extern "C" __declspec(dllexport) void numerisation(long& Adresse,int& seuil ) { //................. //long ( __stdcall *pFuncVb)(int* x,int* y); //*(FARPROC *)&pFuncVb=Adresse; //Je veux donc appeler Analyse en envoyant x=3 et y=5 par exemple et avoir le retour... }
|
|
lundi 13 décembre 2004 à 12:41:41 |
Re : Appeler une fonction VB à partir de C++

ShareVB
|
salut
premier conseil : le plus de byval possible, comme ça pas besoin de pointeurs en C
deuxième conseil : 'int <=> long <=> As Long <=> 4 octets 'short <=> Integer <=> 2 octets
troisième conseil : attention au valeur de retour, si on ne met rien VB ajoute As Variant et pas As Long
enfin, le code :
Private Declare Sub numerisation Lib "numerisation.dll" (byval AdresseFonction As Long,byval seuil As Long)
Private Sub Command1_Click() numerisation AddressOf Analyse, 200& End Sub
Le module .bas: Public function Analyse(Byval x As Long,Byval y As Long) as long MsgBox "ok, ca marche! x=" & x & " y=" & y 'histoire de tester... ' bon après faut voir si tu as besoin de modifier x et y dans cette function Analyse=1 End function
// les noms ne sont-ils pas "décorés" par VC++ ? ou as tu un DEF... extern "C" __declspec(dllexport) __stdcall void numerisation(void* Adresse,int seuil ) { //................. long ( __stdcall *pFuncVb)(int x,int y); pFuncVb=Adresse; // je suis pas sur que ca compile
int ret = pFuncVb(3,5); }
ShareVB
|
|
mercredi 15 décembre 2004 à 14:25:12 |
Re : Appeler une fonction VB à partir de C++

doggyk
|
Re-salut! J'arrive vraiment pas... La partie VB fonctionne (suite aux conseils j'ai fais attention à mettre du long), l'appel à la DLL aussi (j'ai essayé sans le rappel) mais, le rappel... Ca compile pas! Dans chaque cas, j'ai un message(ou du même genre) sur la ligne A:
cannot convert from 'int' to 'int (__stdcall *)(int,int)' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
J'ai essayé les différentes méthodes:
//extern "C" __declspec(dllexport) void numerisation(int Adresse,int seuil ) //ou... //extern "C" __declspec(dllexport) __stdcall void numerisation(int *Adresse,int seuil ) //ou... extern "C" __declspec(dllexport) __stdcall void numerisation(int Adresse,int seuil ) { int ( __stdcall *pFuncVb)(int x,int y);
//pFuncVb=Adresse; //A //ou... //*(FARPROC *)&pFuncVb = Adresse; //A
int ret = pFuncVb(3,5); }
Une idée ou conseil??... A+. Doggyk.
|
|
mercredi 15 décembre 2004 à 16:44:36 |
Re : Appeler une fonction VB à partir de C++

ShareVB
|
salut
typedef long __stdcall (*t_lpFuncVb)(int x,int y);
extern "C" __declspec(dllexport) __stdcall void numerisation(t_lpFuncVb lpAdresse,int seuil ) { //.................
int ret = lpAdresse(3,5); }
rien à changer dans VB //compile sous dev-cpp
ShareVB
|
|
vendredi 17 décembre 2004 à 10:39:47 |
Re : Appeler une fonction VB à partir de C++

doggyk
|
Salut! C'est bon, ca compile mais maintenant VB ne trouve plus le point d'entrée de la dll... je pense que cela lui plait pas d'avoir une fonction qui est est de type t_lpFuncVb même si c'est du long... Vois-tu la solution? Je te remercie de ton aide. Doggyk.
|
|
samedi 18 décembre 2004 à 12:21:59 |
Re : Appeler une fonction VB à partir de C++

ShareVB
|
salut
c'est ce que je pensais : extern "C" __declspec(dllexport) fournit un nom décoré... _numerisation@8 (je pense)
soit tu mets ce nom _numerisation@8 comme Alias de Declare
soit tu ajoutes un fichier DEF à ton projet VC++ dans lequel tu mets :
EXPORTS numerisation @1
et pas besoin d'alias
ShareVB
|
|
Cette discussion est classée dans : fonction, vb, partir, dll, appeler
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
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
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
VB: pb dll C => VB [ par ludo24 ]
Bonjour,J'attaque regulierement des DLL - developpées en C - a partir de VB mais je suis bloqué depuis qq semaines car un de mes collegues me passe de
Comment appeler une dll c++.net en vb.net?!?!? [ par ybar ]
Bonjour j' ai fait une dll en c++.net et je voudrai l'utiliser ces classes dans un programme en vb.net comment faire
Appeler une dll vb a partir du c [ par EBArtSoft ]
Bonjour ,J'ai une dll/activex en vb avec un module de classe nommé"Class1" comprenant une fonction appelé "Execute".J'ai aussi un programme en vc qui
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
Appeler un dll créée en VB [ par lucio57 ]
Bonjour,J'ai créé une dll sous VB et je veux l'appeler d'un autre programme.Pour créer cette dll j'ai utilisé un module de classe et des modules conte
Appel de DLL à partir de VB: problème d'arguments [ par Taoufik77 ]
Bonjour tout le monde,je développe une appli VB qui fait appel à une fonction dll écrite en visual C++. lorsque je fais le debugging, je me rends -com
Comment appeler une rubrique d'aide à partir d'une app VB [ par jfstudio ]
J'ai une application VB, avec un menu ''?'' (Aide) et je voudrais appeler la rubrique aide.chm à partir de ce menu.Ma question est comment fait-on cel
Livres en rapport
|
Derniers Blogs
DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|