Problème de dll

Le
epilot10
Bonjour,
avec VB6, si je ne m'abuse, il faut toujours inscrire un dll avec
Project/Reference avant de pouvoir l'utiliser.
Ça fonctionne avec les dlls standard de Windows. Mais si on a un dll
conçu en C++ par un programmeur qui n'a jamais pensé que ça pourrait
être utilisé en VB6, ça ne semble pas fonctionner. Est-ce que je me trompe ?
J'ai un ami programmeur (C++) qui a écrit un dll dont je voudrais
utiliser les fonctions. On n'arrive pas à le passer dans les références
du projet. On obtient le message :" Le fichier a été lu mais le point
d'entrée est introuvable."

J'aimerais bien savoir ce qui cloche. J'ai effectué recherche après
recherche sur Google, sans résultat.

Merci pour l'aide

Jacquelin Hardy
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian Hugoud
Le #18316971
Bonjour,

D'abord, as-tu placé la dll dans le dossier de l'appli ? Cela peut suffire.

Ensuite il faut que la dll utilise le format stdcall. Plus d'infos ici...

http://rp.developpez.com/vb/tutoriels/dll/

Hope this helps

Christian

"epilot10"
Bonjour,
avec VB6, si je ne m'abuse, il faut toujours inscrire un dll avec
Project/Reference avant de pouvoir l'utiliser.
Ça fonctionne avec les dlls standard de Windows. Mais si on a un dll conçu
en C++ par un programmeur qui n'a jamais pensé que ça pourrait être
utilisé en VB6, ça ne semble pas fonctionner. Est-ce que je me trompe ?
J'ai un ami programmeur (C++) qui a écrit un dll dont je voudrais utiliser
les fonctions. On n'arrive pas à le passer dans les références du projet.
On obtient le message :" Le fichier a été lu mais le point d'entrée est
introuvable."

J'aimerais bien savoir ce qui cloche. J'ai effectué recherche après
recherche sur Google, sans résultat.

Merci pour l'aide

Jacquelin Hardy


Vincent Guichard
Le #18317341
epilot10 a écrit :
Bonjour,
avec VB6, si je ne m'abuse, il faut toujours inscrire un dll avec
Project/Reference avant de pouvoir l'utiliser.


Non, pas forcement, il existe d'autres moyens. En particulier
l'instruction Declare.

Ça fonctionne avec les dlls standard de Windows. Mais si on a un dll
conçu en C++ par un programmeur qui n'a jamais pensé que ça pourr ait
être utilisé en VB6, ça ne semble pas fonctionner. Est-ce que je me
trompe ?


En fait ça dépends de la convention d'appel utilisée lors de la cré ation
de la DLL. Il faut que la dll expose les fonctions sans décoration de n om.

J'ai un ami programmeur (C++) qui a écrit un dll dont je voudrais
utiliser les fonctions. On n'arrive pas à le passer dans les réfé rences
du projet. On obtient le message :" Le fichier a été lu mais le poi nt
d'entrée est introuvable."


C'est donc une DLL sans les deux fonctions qui permettent son
enregistrement (DllRegisterServer et DllUnregisterServer). Ce n'est
probablement pas une dll objet, mais elle est peut être quand même
exploitable.


J'aimerais bien savoir ce qui cloche. J'ai effectué recherche apr ès
recherche sur Google, sans résultat.


Tu peux utiliser le programme Depends.exe (le Dependency Walker,
disponibles chez Microsoft) pour connaître le nom décoré des foncti ons,
et essayer d'utiliser Declare avec Alias pour accéder aux fonctions
depuis VB6.


Merci pour l'aide

Jacquelin Hardy


Jean-marc
Le #18318841
epilot10 wrote:
Bonjour,
avec VB6, si je ne m'abuse, il faut toujours inscrire un dll avec
Project/Reference avant de pouvoir l'utiliser.
Ça fonctionne avec les dlls standard de Windows. Mais si on a un dll
conçu en C++ par un programmeur qui n'a jamais pensé que ça pourrait
être utilisé en VB6, ça ne semble pas fonctionner. Est-ce que je me
trompe ? J'ai un ami programmeur (C++) qui a écrit un dll dont je
voudrais utiliser les fonctions. On n'arrive pas à le passer dans les
références du projet. On obtient le message :" Le fichier a été lu mais le
point
d'entrée est introuvable."



C'est parce que c'est une Dll standard, pas une DLL ActiveX.
Il n'est pas besoin de l'inscrire.
Il suffit d'y faire référence avec Declare ...

Tu peux utiliser cet article de la FAQ qui explique en détail
comment faire une Dll C ou C++ qui exporte des fonctions utilisables
depuis VB (ou un autre langage d'ailleurs):
http://faq.vb.free.fr/index.php?question4

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
epilot10
Le #18320761
A Christian, Vincent et Jean-Marc

Un gros merci pour votre aide. On a enfin réussi à faire communiquer
VB6 et le fameux dll : problème de définition de integer en C++ et en
VB6, problème de ByVal et ByRef, problème d'incompréhension de ma part
de "Declare". Je m'entêtais à essayer, en vain d'enregistrer le dll
dans le projet alors que je n'avais pas à le faire.

Donc, merci, merci et merci

Bonne journée messieurs

Jacquelin Hardy


epilot10 a écrit :
Bonjour,
avec VB6, si je ne m'abuse, il faut toujours inscrire un dll avec
Project/Reference avant de pouvoir l'utiliser.
Ça fonctionne avec les dlls standard de Windows. Mais si on a un dll
conçu en C++ par un programmeur qui n'a jamais pensé que ça pourrait
être utilisé en VB6, ça ne semble pas fonctionner. Est-ce que je me
trompe ?
J'ai un ami programmeur (C++) qui a écrit un dll dont je voudrais
utiliser les fonctions. On n'arrive pas à le passer dans les références
du projet. On obtient le message :" Le fichier a été lu mais le point
d'entrée est introuvable."

J'aimerais bien savoir ce qui cloche. J'ai effectué recherche après
recherche sur Google, sans résultat.

Merci pour l'aide

Jacquelin Hardy


jeanmarcnoury
Le #18322951
On 6 jan, 22:24, epilot10
A Christian, Vincent et Jean-Marc

        Un gros merci pour votre aide. On a enfin réussi à fa ire communiquer
VB6 et le fameux dll : problème de définition de integer en C++ et en
VB6, problème de ByVal et ByRef, problème d'incompréhension de ma p art
de "Declare". Je m'entêtais à essayer, en vain d'enregistrer  le dl l
dans le projet alors que je n'avais pas à le faire.

        Donc, merci, merci et merci



... Et merci à toi pour le retour !

Cordialement,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Publicité
Poster une réponse
Anonyme