begin process at 2012 05 29 11:14:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

DLL VC++ utilisée dans un EXE VB2008


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

DLL VC++ utilisée dans un EXE VB2008

samedi 23 mai 2009 à 18:29:40 | DLL VC++ utilisée dans un EXE VB2008

oliv72

Bonjour à tous,

Je tente de faire un outil de monitoring en VB2008, au moyen d'une DLL écrite en C++.

Problème : je ne connais ni VC++, ni VB2008, ni la programmation de DLL !

Cependant je connais VB5 (!) et je suis reparti d'une solution 100% C++ que j'ai réussi à compiler et à faire fonctionner, puis que j'ai adapter à ma sauce.
Je ne suis certainement pas au bout de mes ennuis, mais mon problème actuel se situe au moment de l'appel à l'une des API de ma DLL. J'obtiens en effet en effet l'erreur suivante : "EntryPointNotFoundException". J'ai sûrement oublié quelque chose mais quoi et où ? Est-ce du côté de la DLL que le problème se trouve ou bien dans mon appel VB ? Et où précisément ???

Voici les extraits de mon code. Tout d'abord le .h de la DLL VC++ :

#define

MONITORING_API __declspec ( dllexport )

extern "C" MONITORING_API bool installerLeMonitoring(LPCWSTR cheminDuClient, HWND hFenetre, PROCESSUS_A_MONITORER** ppProcessus, int nombreDeProcessus);

extern

"C" MONITORING_API void desinstallerLeMonitoring();


Puis maintenant l'appel dans l'EXE VB2008 :

Imports

System.Runtime.InteropServices

PrivateDeclareAutoFunction installerLeMonitoring Lib"D:\Developpements\opb\bin\monitoring.dll" (ByRef cheminDuClient AsString, ByVal hFenetre AsInteger, ByVal ppProcessus() As ProcessusAMonitorer, ByVal nombreDeProcessus AsInteger) AsBoolean

PrivateDeclareAutoSub desinstallerLeMonitoring Lib"D:\Developpements\opb\bin\monitoring.dll" ()

(...)

installerLeMonitoring(Application.ExecutablePath, frmPrincipale.Handle(), processus, nombreDeProcessus)

Si quelqu'un peut m'aider à résoudre ce problème... Je dirais même que si quelqu'un est intéressé globalement par le projet pour m'aider à le mettre au point, je ne dis pas non ! En deux mots la DLL surcharge les appels aux API de gestion de fichier, d'affichage de texte (à l'écran) et d'ouverture de fenêtres (notamment avec la lib Detours), et communique à l'EXE toutes ces informations. Pour le moment le EXE se contente d'afficher ce qu'il reçoit dans un TextBox ! Mais ce qui m'intéresse c'est d'arriver à faire marcher la DLL et à réussir la communication avec l'EXE.

Olivier
samedi 23 mai 2009 à 19:00:20 | Re : DLL VC++ utilisée dans un EXE VB2008

oliv72

Je fais du surplace, mais j'ai simplement constaté que si j'appelle desinstallerLeMonitoring(), ça fonctionne (je veux dire que ça ne plante plus !).

Un coup de dumpbin me donne ceci pour les deux noms de fonction trouvés :

?installerLeMonitoring@@YA_NPB_WPAUHWND__@@PAUPROCESSUS_A_MONITORER@@H@Z = ?installerLeMonitoring@@YA_NPB_WPAUHWND__@@PAUPROCESSUS_A_MONITORER@@H@Z (bool __cdecl installerLeMonitoring(wchar_t const *,struct HWND__ *,struct PROCESSUS_A_MONITORER *,int))

desinstallerLeMonitoring = _desinstallerLeMonitoring

Je suppose que le problème vient de là : le nom de la première fonction n'est pas très clair...
Je poursuis mes investigations. Si vous avez des suggestions, n'hésitez pas !

Olivier


samedi 23 mai 2009 à 19:34:30 | Re : DLL VC++ utilisée dans un EXE VB2008

oliv72

Réponse acceptée !
Ca y est ! J'ai trouvé ! En fait j'avais deux anos : une différence de type entre le .h et le .cpp (pointeur de pointeur d'un côté et pointeur de l'autre), et une dans le VB où le tableau de structures était en ByVal au lieu de Byref...
Curieux que le compilateur n'ait pas détecté la première ano.
Bon ! je poursuis la mise au point !

Olivier


Cette discussion est classée dans : exe, dll, api, monitoring, vb2008


Répondre à ce message

Sujets en rapport avec ce message

C# probleme d'exportation d'exe [ par golum ] voila g écrit un prog en C# mais bon si je fait mon exe il me manque une dll de base pour l'écécuter (cette dll est payante).suis-je oubligé de faire dev c++ Api & dll [ par pounch ] Tout d'abord lu a tous comme j'en avais marre de chercher tout seul dans mon coin, ben j'a decidé de veindre Bon voila mon pr heritage et dll dynamique [ par dune ] Bonjour,je programme un gestionnaire de plugins et certaines fonctions et class doivent etre utilisees dans chaque plugin. Je mets donc mes fonctions dll [ par zelze ] (vc++ 6.0)Voila j'ai vu que quelqu'un avait également posez une question sur les dll et Vieuxlion a répondu a des question que j'allais poser mais il Lien DLL 16 / API WIN32 [ par CoreBreaker ] Bonjour quelqu'un sait-il comment une fonction de l'API Win32 dans une DLL 16bits ?Et de manière générale comment appeler une fonction d'une DLL 32bit chargement de dll [ par juliol ] bonjour, j'ai un probleme...j'utilise une dll avec loadlibrary(), lorsque je lance mon programme dans VC++il n'y a aucun probleme, elle se chargeil en exporter une fonction [ par lahou ] Bonjourest-ce que qqn sait comment faire pour exporter une fonction d'un exe comme on le fait avec une dll avec __declspec(dllexport)En fait je veux f comment relier des dll à un seul projet ? [ par ilimo ] bonjour,j'ai trois projets :P1 : est une dllP2 : est une dllP3 : c'est le exeje peux relier les .lib de P1 et P2 au programme exede cette façon quand problème de copier-coller pour les .h des dll ? [ par ilimo ] bonjour,j'ai trois projets : P1 : dll : contient la classe aP2 : dll : contient la classe bP3 : exe : contient la classe c qui se sert d utiliser un exe comme dll ? [ par ToasTy62 ] est-il possible d'utiliser un exe comme dll ?pas de partage de ressources rien, juste pouvoir exporter une fonction ou 2...marchi d'avance !


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,198 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales