Import DLL dans Purebasic
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Import DLL dans Purebasic
Salut,
C'est possible à partir d'une DLL écrit en C++ peut importer dans Purebasic ? J'ai un fonction void qui affiche simple un texte genre hello. Comment Créer un exécutable en Purebasic chargeant la DLL ? Comment on écrit en quelques codes comme exemple ?
Merci votre aide sera bienvenue !
C'est possible à partir d'une DLL écrit en C++ peut importer dans Purebasic ? J'ai un fonction void qui affiche simple un texte genre hello. Comment Créer un exécutable en Purebasic chargeant la DLL ? Comment on écrit en quelques codes comme exemple ?
Merci votre aide sera bienvenue !
Re: Import DLL dans Purebasic
C'est tout à fait possible. Je pense que tu devrait trouver ton bonheur dans l'aide de la bibliothèque "Library" intégrée à PureBasic ainsi que dans l'exemple fourni sur la page des "Prototypes"
Re: Import DLL dans Purebasic
bsr à tous
je ne code plus bcp en PB pour le moment..
mais pour une question sur les DLL, je connais un peu le sujet...
voici deux codes qui utilisent deux maniere pour envoyer des paramétres à une DLL
et recuperer les données calculées par celle-ci
en 2008 j'ai utilisé des prototypes, il y a deux codes dont le second fait a l arrache
qui utilise le mode globale pour les variables prototypes c'est une astuce de "User_Russian" du forum anglais
https://www.purebasic.fr/french/viewtop ... f=3&t=8459
dans cet autre code j'utilise la commande CallFunction()
https://www.purebasic.fr/french/viewtop ... =3&t=14026
j'oubliais, j 'ai fais ca aussi pour avoir la listes de fonctions d'une DLL
https://www.purebasic.fr/french/viewtop ... =6&t=10202
j’espère que ces exemples pourront t'aider
Cordialement
je ne code plus bcp en PB pour le moment..
mais pour une question sur les DLL, je connais un peu le sujet...
voici deux codes qui utilisent deux maniere pour envoyer des paramétres à une DLL
et recuperer les données calculées par celle-ci
en 2008 j'ai utilisé des prototypes, il y a deux codes dont le second fait a l arrache
qui utilise le mode globale pour les variables prototypes c'est une astuce de "User_Russian" du forum anglais
https://www.purebasic.fr/french/viewtop ... f=3&t=8459
dans cet autre code j'utilise la commande CallFunction()
https://www.purebasic.fr/french/viewtop ... =3&t=14026
j'oubliais, j 'ai fais ca aussi pour avoir la listes de fonctions d'une DLL
https://www.purebasic.fr/french/viewtop ... =6&t=10202
j’espère que ces exemples pourront t'aider
Cordialement
Re: Import DLL dans Purebasic
bjr à tous
l'autre jour j'avais omis de mentionner ce programme que j'utilise et en plus gratuit
il est très utile pour connaitre les paramètres des fonctions d'un fichiers dll
https://www.alternate-tools.com/pages/c ... p?lang=ENG
Cordialement
l'autre jour j'avais omis de mentionner ce programme que j'utilise et en plus gratuit
il est très utile pour connaitre les paramètres des fonctions d'un fichiers dll
https://www.alternate-tools.com/pages/c ... p?lang=ENG
Cordialement
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Merci à tous !
Désolééé pour le retard de la réponse.
Désolééé pour le retard de la réponse.
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Ok je vais plus simple (hyper simple !) de comment cela marche la DLL dans Purebasic
Voici le code :
Ok tout là cela marche bien comme test mais comment afficher la fonction SomeFunction (c'est un void function) sans paramètre appelé par la DLL dans Purebasic?
Pourriez vous m'aider, svp ?
Le fichier DLL : ==>> https://www.dropbox.com/s/s9cu3se9zq8wh71/test.dll?dl=0
Voici le code :
Code : Tout sélectionner
Procedure Function()
res=OpenLibrary(0,"test.dll")
If res
Calling = CallFunction(0, "SomeFunction")
CloseLibrary(0)
Else
MessageRequester("ERROR","Cant find DLL in Path",0):End
EndIf
EndProcedure
OpenConsole()
If Function()
PrintN("It is working !!")
Delay(5000)
EndIf
Pourriez vous m'aider, svp ?
Le fichier DLL : ==>> https://www.dropbox.com/s/s9cu3se9zq8wh71/test.dll?dl=0
Re: Import DLL dans Purebasic
chez moi ta dll test ne renvoi aucune fonction.
Voici le code que j'utilise pour analyser une dll :
Tu peux voir que rien n'apparait.
A compiler en 32 ou 64 bits en fonction de la dll bien sur.
@++
Voici le code que j'utilise pour analyser une dll :
Code : Tout sélectionner
Enumeration
#Viewver
#Button_LoadDll
#ListIcon_dll
EndEnumeration
Procedure LoadDLL()
ClearGadgetItems( #ListIcon_dll )
Dll.s = OpenFileRequester ( "ouvrir une dll", "", "Dynamic link library (*.dll)|*.dll", 0)
If Dll <> ""
SetWindowTitle ( #Viewver, "open dll : " + GetFilePart (Dll))
OpenLibrary (0, Dll)
ExamineLibraryFunctions (0)
While NextLibraryFunction () <> 0
AddGadgetItem ( #ListIcon_dll, -1, LibraryFunctionName () + Chr (10) + Str ( LibraryFunctionAddress ()))
Wend
CloseLibrary (0)
EndIf
EndProcedure
If OpenWindow ( #Viewver, 0, 0, 600, 450, "open dll", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
ListIconGadget ( #ListIcon_dll, 10, 40, 580, 400, "nom de la fonction", 288, #PB_ListIcon_GridLines )
AddGadgetColumn ( #ListIcon_dll, 1, "Address", 288)
ButtonGadget ( #Button_LoadDll, 235, 10, 130, 20, "Ouvrir une dll" )
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Button_LoadDll
LoadDLL()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
A compiler en 32 ou 64 bits en fonction de la dll bien sur.
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Ma test.dll marche chez moi en 32 bits sauf que je ne sais pas comment afficher le print par la fonction SomeFunction()...
Ton code est très bien, elle affiche la fonction SomeFunction à l'adresse 1954549824... mais je veux moi afficher ma fonction dans purebasic, comment on fait cela ?
Ton code est très bien, elle affiche la fonction SomeFunction à l'adresse 1954549824... mais je veux moi afficher ma fonction dans purebasic, comment on fait cela ?
Re: Import DLL dans Purebasic
Etrange, chez moi rien ne s'affiche dans ta dll
PB 5.72
@++
PB 5.72
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
ok oui c'est étrange donc j'ai compilé en exe, est ce cela marche chez toi pour voir ?
https://www.dropbox.com/s/8qx82i1ikkuwe ... l.zip?dl=0
https://www.dropbox.com/s/8qx82i1ikkuwe ... l.zip?dl=0
Re: Import DLL dans Purebasic
Non, chez moi ça reste vide. Tu essaye bien avec la Dll que tu as mis sur DropBox ?
@++
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Et ça ?
https://www.dropbox.com/s/9msaxq14w6w5dm5/test.zip?dl=0
J'ai compressé comme ça c'est l'original sans modification par externe...
https://www.dropbox.com/s/9msaxq14w6w5dm5/test.zip?dl=0
J'ai compressé comme ça c'est l'original sans modification par externe...
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Sinon je mets tout, la DLL et la Lib ?
peut être c'est ça qui manque, non ?
https://www.dropbox.com/s/wccjmogo2zbi6 ... 2.zip?dl=0
peut être c'est ça qui manque, non ?
https://www.dropbox.com/s/wccjmogo2zbi6 ... 2.zip?dl=0
Re: Import DLL dans Purebasic
Non aucune fonction de retour.
Voici un code qui fait (je pense) ce que tu souhaite :
le premier code sert a creer la Dll. Et le second a lire le contenue. J'ai commenter au mieux.
Ps : chez moi c'est ok
EDIT : Voici un zip avec tout pour tester en mode console
@++
Voici un code qui fait (je pense) ce que tu souhaite :
Code : Tout sélectionner
;{ Partie qui permet de creer la Dll
Global ReturnString$
ProcedureDLL.s MaFonction() ; nom de la fonction qu'on retrouvera dans la Dll
ReturnString$ = "Voici un texte dans une Dll !" ; texte que l'on souhaite recuperer
ProcedureReturn ReturnString$
EndProcedure
;}
;{ Partie qui te permet de lire ta Dll
If OpenLibrary(0, "Chemin vers la Dll que tu aura creer avec le code ci-dessus."); on ouvre la Dll via son chemin
String.s = PeekS(CallFunction(0, "MaFonction")); le nom de la fonction qui nous interesse dans la Dll (MaFonction). On fait appel a peeks pour lire une chaine de caractere en memoire
Debug String.s ; on affiche le résultat. ça peux etre dans un print ou autre.
CloseLibrary(0)
EndIf
;}
; ces 2 codes sont bien evidement a separer ;)
Ps : chez moi c'est ok
EDIT : Voici un zip avec tout pour tester en mode console
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- threedslider
- Messages : 381
- Inscription : dim. 01/juil./2018 22:38
Re: Import DLL dans Purebasic
Merci beaucoup ! ça marche nickel !
Effectivement c'est une autre façon de faire mais je doute que tu as compilé DLL dans purebasic, non ?
Moi j'ai compilé en Visual studio pour la DLL, certain marche pour plus simple mais quand c'est plus complexe d'autre pas du tout... :-/
Effectivement c'est une autre façon de faire mais je doute que tu as compilé DLL dans purebasic, non ?
Moi j'ai compilé en Visual studio pour la DLL, certain marche pour plus simple mais quand c'est plus complexe d'autre pas du tout... :-/