Point d'entrée dll introuvable

Résolu
gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
27 août 2009
- 7 mai 2009 à 11:35
gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
27 août 2009
- 12 mai 2009 à 16:52
Salut à tous,

Voilà je suis débutante en VB6 et je me heurte à un problème dont je n'arrive pas à trouver la solution sur le net
Voilà, je suis en train de créer un nouveau module dans un programme déjà éxistant, ce module doit pouvoir utiliser des fonctions définies dans un DLL fait en C (et dont j'ai les sources, vu que c'est moi qui codé).
Dans mon code C j'ai la déclaration suivante :

__declspec( dllexport ) char* __stdcall MaFonction (long Param1, char *Param2, char *Param3, char *Param4, char *Param5);

Quand je compile mon code C j'ai bien la DLL qui prend bien en compte cette fonction.
Puis dans mon code VB6 je met :

Declare Function MaFonction Lib "MaDLL.dll" (ByVal Param1 As Long, ByVal Param2 As String, ByVal Param3 As String, ByVal Param4 As String, ByVal Param5 As String) As String

et quand je veux utiliser cette fonction en VB j'ai l'erreur suivante :

"Erreur d'execution '453'; Point d'entrée MaFonction d'une DLL introuvable dans MaDLL.dll", donc je me dis que ma déclaration sous VB6 doit avoir un souci

Est ce que quelqu'un aurait une idée d'où cela pourrait provenir?

Merci pour votre aide

Gaga38

Petit à petit l'oiseau fait son nid

7 réponses

cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
7 mai 2009 à 22:16
Pas question d'enregistrer une vraie DLL.
As-tu créé et linké un fichier .DEF avec ta DLL  ?

LIBRARY leNomDeTaLib
EXPORTS
MaFonction = _MaFonction@20

Le @20 signifie que 20 octets sont empilés (5 paramètres int, et 5*4 =20)
3
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
11 mai 2009 à 18:55
Dans les options du projet VC++, ça se trouve dans Linker => Input => Module Definition File.
3
Calade
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
7 mai 2009 à 15:35
Bonjour,

Au hasard, vu que je connais pas le C. est-ce que ta DLL est bien référencée dans ton programme VB (via le menu Références) et est-elle bien référencée dans la base de registre (via la commande DOS Regsvr32.

Calade
0
Mayzz
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
33
7 mai 2009 à 21:08
Salut,

Ou se trouve ta DLL ? pour plus de facilité tu dois déposer dans le répertoire de l'application, dans le répertoire de Windows ou dans le répertoire système.

Bizarement quant je développais en vb6, j'ai eu des "bug?" car la DLL devait être placer dans le système et non dans le répertoire de l'application.

Je rappel que nous parlon bien de DLL standard avec des API et non de DLL ActiveX qui elles doivent être inscrite au préalable dans le regsistre (DllRegisterServer ou Regsvr32).

Juste pour infos quel est ton os ?

Tu n'est pas sous une plateforme x64 ?
0

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

Posez votre question
gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
27 août 2009

11 mai 2009 à 10:22
Salut,

Tout d'abord merci de vos réponses
Pour répondre à Mayzz, je suis sous Windows, XP professionnel et oui il s'agit de DLL standard avec API.
Et effectivement je mettais mon DLL dans le dossier du projet, après quelques petits test, je dirai que si le DLL n'est pas dans le dossier system de windows alors il a l'air de la prendre dans le dossier du projet. Mais le comportement et l'erreur reste les même où que soit le DLL 
Ensuite, ghuysmans99 qu'appelles tu linké le fichier .def?

Le fichier .def que j'ai ressemble à ça :

EXPORTS
    [mailto:ARCGetAttachmentZIP=ARCGetAttachmentZIP@8 ARCGetAttachmentZIP@8] @1
    [mailto:ARCSaveDocumentZIP=ARCSaveDocumentZIP@92 ARCSaveDocumentZIP@92] @2
    [mailto:ARCSearchDocumentZIP=ARCSearchDocumentZIP@20 ARCSearchDocumentZIP@20] @3

Mais je pense que je peux le modifier sans problème pour qu'il colle à ce que tu m'as donné comme exemple.

Merci encore

Petit à petit l'oiseau fait son nid
0
gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
27 août 2009

12 mai 2009 à 16:05
OK, je vais essayer de trouver l'équivalent sous code::blocks pour voir ce que ça donne

Petit à petit l'oiseau fait son nid
0
gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
27 août 2009

12 mai 2009 à 16:52
Ok ça marche mieux, je n'ai plus l'erreur donc c'est super je vais pouvoir avancer

Merci!!!

Petit à petit l'oiseau fait son nid
0