Probleme de DLL

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Probleme de DLL

Message par Aranoth »

Tout d'abord, bonne année à tous ! :wink:



Voici mon problème:


J'ai une DLL contenant une fonction

Code : Tout sélectionner

ProcedureDLL A_Debug(string$)
  MessageRequester("Debugger",string$)
EndProcedure
Puis j'ai un fichier PB qui propose un fonction dont le but est de servir de "wrapper" à la DLL

Code : Tout sélectionner

dll = OpenLibrary(-1,"DLL\alib.dll")
If dll = 0
  MessageRequester("Erreur","Impossible de charger alib.dll")
  End
EndIf

Procedure A_Debug(msg$)
  CallFunction(dll,"A_Debug",msg$)
EndProcedure

Et enfin mon fichier PB classique:

Code : Tout sélectionner

IncludeFile "ALib.pb"

A_Debug("ok")

;CallFunction(dll,"A_Debug","yo")


CloseLibrary(dll)
End
La ligne en commentaire marche très bien...
Alors que comme ca, j'ai le droit à:
Le programme a rencontré une erreur et blabla...doit fermer
Erreur dans <inconnu>


Si quelqu'un a une idée ? :P

Merci :wink:
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'ai rien compris, mais ton closelibrary, tu devrais le mettre avec openlibrary.
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

Ok je recommence :lol:


DLL contenant une fonction A_Debug --> fichier PB contenant une autre A_Debug, qui appelle la fonction du meme nom de la DLL --> utilisation de A_Debug


C'est en fait pour éviter de devoir écrire CallFunction(), tu comprends mieux là ? :wink:
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je ne comprenais pas parce que l'exemple que tu donnes ne correspond pas à ce que tu cherches à faire où c'est imcomplet, en tout cas je ne comprends toujours pas le problème.



:roll:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

mets donc ta variable "dll" en global :wink:
et tu veras que ça ira mieux car sinon, la variable dll de la procedure vaut 0
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

...

t'a raison en plus....


bon je vais aller me coucher lol..



quel abrutis je fait :?


Merci tu m'évite de perdre encore de nombreuses heures :P
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Pourquoi tu ne mets pas tout dans ta procédure, comme ça tu n'as pas besoin de globale?

Code : Tout sélectionner

Procedure A_Debug(msg$) 
dll = OpenLibrary(-1,"DLL\alib.dll") 
If dll = 0 
  MessageRequester("Erreur","Impossible de charger alib.dll") 
  Else
  CallFunction(dll,"A_Debug",msg$) 
CloseLibrary(dll) 
EndIf 
EndProcedure 
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

parce que je vous ai montré qu'un extrait,
il y a beaucoup plus de fonctions (acutellement 15)


J'ai encore une question cependant, j'ai vu sur certains codes l'utilisation de ProcedureCDLL plutot que ProcedureDLL...quelle est la différence ?
Merci
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

ProcedureCDLL pour les fonctions exportées en _cdecl (Linux par exemple).
"Qui baise trop bouffe un poil." P. Desproges
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

Ah ok, merci.

je vais me contenter de ProcedureDLL^^


Merci à tous :wink:
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Répondre