PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → DLL VB, les fonctions ne sont pas trouvées dans WD
DLL VB, les fonctions ne sont pas trouvées dans WD
Débuté par info, 11 déc. 2005 21:17 - 5 réponses
Posté le 11 décembre 2005 - 21:17
Bonjour,

J'ai développé une petite DLL en VB avec quelques fonctions dans une classe. Cette DLL fonctionne bien lorsque je l'utilise depuis VB mais avec WD 9 j'ai quelques problèmes:

Le chargement de la DLL est correct mais lorsque j'appelle une fonction depuis AppelDLL32, WD m'affiche une erreur:

La fonction 'Fonction_1' n'a pas été trouvée dans la DLL X:\MaDLL.DLL

- Vérifiez le nom de la fonction invoquée
- Vérifiez que la fonction est bien dans cette DLL, et qu'elle en est exportée (par exemple avec l'apercu rapide de Windows)

Il me semble qu'il y a effectivement un problème d'exportation des fonctions comme mentionné par WD mais n'étant pas spécialiste, je ne sais pas ce qu'il faut faire dans VB pour que ces fonctions soient exportées...

Pour info, dans la Class Module, les fonctions sont publiques (Public Function Function_1()).


Avez vous une idée !!!

Cordialement,

Merci pour le temps que vous passerez sur ce problème!
Posté le 12 décembre 2005 - 08:30
sous VC++ toutes mes fonctions sont exportées à l'aide de cette commande __declspec(dllexport) dans le fichier .h

extern "C"
{
__declspec (dllexport) int mafonction() ;
}

Il doit exister le même mode de fonctionnement sous VB.

--
Emmanuel Lecoester
Posté le 12 décembre 2005 - 12:04
Attention avec les DLL écrites en VB, ce sont souvent des genres de controle activeX!!!
NE pas utiliser appeldll32.

Les DLL vb, les DLL .net, et les DLL dites natives (winapi) ne sont pas la même chose (remerciez BILL qui joue avec les formats....)

On doit pouvoir toutefois les utiliser en tant qu'objets automation... Y'a un chapitre sur les DLL vb dans l'aide je crois.
Posté le 12 décembre 2005 - 16:21
Merci Stef et merci Emmanuel,

Nous en sommes toujours au même point! Merci à Bill qui nous "facilite" la vie et nous fait perdre du temps...

Un grand merci pour votre précieuse aide.


Je cherche toujours une solution et vous communiquerai les résultats!!!


Salutations.
Posté le 12 décembre 2005 - 21:25
Jette un coup d'oeil a la solution proposer par l'aide sur les DLL vb...
C'est surement la solution
Posté le 13 décembre 2005 - 15:43
Bonjour Stef,

C'est effectivement la solution, il faut travailler avec des objets OLE. Seul problème encore rencontré c'est l'appel de cette "DLL" depuis un thread. L'appel fonctionne depuis un bouton sur une fenêtre mais dès que je l'intègre à un thread, erreur du mode test WD (pas d'erreur d'exécution à proprement parlé mais une erreur windows habituelle :-) avec demande de signalement à Microsoft).

Un grand merci pour ta réponse précédente qui m'a permis d'avancer dans mes connaissances WD. Le problème ci-dessus reste à résoudre mais il n'est pas bloquant puisque je l'ai contourné...


Cordialement,

A+