Point d'entrée dll introuvable [Résolu]

Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
27 août 2009
- - Dernière réponse : gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
3
Merci
Dans les options du projet VC++, ça se trouve dans Linker => Input => Module Definition File.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
0
Merci
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
Commenter la réponse de Calade
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
0
Merci
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 ?
Commenter la réponse de Mayzz
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
27 août 2009
0
Merci
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
Commenter la réponse de gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
27 août 2009
0
Merci
OK, je vais essayer de trouver l'équivalent sous code::blocks pour voir ce que ça donne

Petit à petit l'oiseau fait son nid
Commenter la réponse de gaga38
Messages postés
46
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
27 août 2009
0
Merci
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
Commenter la réponse de gaga38

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.