DLL Probleme pour utiliser vorbisfile.dll (fichier introuvable)
cs_Marcial
Messages postés57Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention31 juillet 2008
-
24 juin 2007 à 12:51
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
24 juin 2007 à 18:07
Bonjour a tous...
J'ai comme qui dirait un problème...
J'essaye depuis un bon petit moment maintenant, d'utiliser la DLL vorbisfile.dll
pour récuperer les propriétés des fichiers OGM mais rien n'y fait...
Quoi que je fasse et quelque soit la façon dont j'essaye de déclarer la DLL
Vb me dit: "Erreur d'execution '53'....Fichier introuvable: vorbisfile.dll"
J'ai essayer tout les chemins possibles et imaginables sans succes...
De faire une déclaration de type Function et de type Sub...
J'ai également essayer de mettre la dll dans différents répertoires...
J'ai même essayer (en désespoire de cause et sans aucune conviction)
de l'enregistrée avec REGSVR32.EXE... Bien sur ça n'a pas marché...
Ce que je ne comprend pas c'est que j'ai déjà utilisé des dll dans d'autres
applications et que cela n'a jamais posé de problèmes...
Cette saletée commence a me faire devenir chèvre...
Y'aurais t'il une bonne âme pour me donner la solution.
Merci par avance.
___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir...
___________________________________________
A voir également:
DLL Probleme pour utiliser vorbisfile.dll (fichier introuvable)
, je l'ai longuement parcouru et m'en suit servi
pour ecrire l'appel de la dll.
Je doit avouer que j'ai un peu de mal a retranscrire ce qui y est
expliqué. Tout les exemples sont donnés en C ou C++...
Ce qui prète a penser que la dll est écrite en C ou C++...
Pour ce qui est des dépendances je suis certain qu'il ne me manque rien...
J'ai décompilé la dll avec Windasm...
Pour info, les dépendances sont les suivante:
- ogg.dll
- vorbis.dll
- kernel32.dll
Et le conteneur est installé sur le système, mais je ne pense pas
que cela soit indispansable...
Par contre il n'y apas de fichier *.lib disponible...
Pensez vous que cela pourait venir de là ?
(Je pose la question mais a mon avis la réponce sera non... )
___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir...
___________________________________________
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 juin 2007 à 14:38
Le .lib est inutile en VB, par contre pour que ta dll soit utilisable en VB, il faut que la convention d'appel soit stdcall.
C'est à dire que chaque fonction de la dll doit etre exportée avec l'attribut _stdcall. Par défaut en C les fonctions des dll sont exportée avec l'attribut Cdecl. Dans ce cas la dll n'est pas utilisable avec VB
cs_Marcial
Messages postés57Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention31 juillet 2008 24 juin 2007 à 14:47
Comment puis-je savoir si l'attribut est _stdcall ou cdecl ?
___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir...
___________________________________________
cs_Marcial
Messages postés57Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention31 juillet 2008 24 juin 2007 à 17:30
Bon,
j'ai eu du mal a trouver, mais ça y est...
la convention d'appel de la dll est cdecl...
(j'ai tourver l'info dans le commentaire d'une source...lol...
Si y'en a un qui me dit que je cherche pas avant de demander
je lui arrache les yeux lol)
Je ne l'ai pas encore vraiment parcouru, mais il semble que
cette source apporteras une réponce a mon problème...
Apparement l'astuce consiste a utiliser msvcrt.dll pour
obtenir un handle.
Je posterais dès que j'en saurait plus sur le sujet....
Par contre je n'ai pas compris ou trouver dans une dll décompilée,
la différence entre une dll en convention stdcall et cdecl...
(j'utilise windasm...il m'en faut peut etre un autre...?)
J'ai aussi un peu chercher dans la source de ogg.dll pour
voir si je trouvais quelque chose en rapport avec les conventions
d'appel mais je n'ai pas trouvé.
Si tu pouvait m'éclairer sur ce point ce serait super cool...
En tout cas je te remerci pour ton aide...
Tu ne t'ai pas arraché un neurone mais ton aide m'a été précieuse...
Merci aussi a toi PCPT...
___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir...
___________________________________________
cs_Marcial
Messages postés57Date d'inscriptionsamedi 3 mai 2003StatutMembreDernière intervention31 juillet 2008 24 juin 2007 à 17:57
j'y pense tite question,
pensez vous qu'il soit possible de modifier facilement les
sources de vorbisfile.dll pour passer la convention d'appel
en stdcall ?? ou cela est il fastidieux et complex ??
___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir...
___________________________________________
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 juin 2007 à 18:05
Une dll est un binaire qui fournit des fonctions à certaines adresses (offset dans le binaire exécutable).
Tu localises dans le listing asm (issu de windasm ou autre) un point d'entrée d'une fonction prenant des params et tu vérifies comment la func accède aux params et comment elle finit,
Exemple: DWORD fAdd (param INT, param INT)
si tu vois:
mov eax, [esp+4]
add eax, [esp+8]
ret 8
STDCALL (params sur pile et func dépile)
mov eax, [esp+4]
add eax, [esp+8]
ret 0
CDECL (params sur pile et func laisse appelant dépiler)
lea eax, [ecx+edx]
ret 0
FASTCALL (params en registre et rien à dépiler ici)