Import
Import
Salut, j'ai regarder le tuto de micro sur comment faire une dll
mais ça ne fonctionne pas chez moi, ça dis que le point d'entrée
de la procédure est introuvable, blablabla...
Comment créer une dll et communiquer avec ?
mais ça ne fonctionne pas chez moi, ça dis que le point d'entrée
de la procédure est introuvable, blablabla...
Comment créer une dll et communiquer avec ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Faisant simple avec cette exemple qui va nous permettre de faire une addition.
■ Code de la DLL : MaDLL.pb
0 - Tu sauvegardes
1 - Option de compilation : Format de l'exécutable -> Share DLL
2 - Tu crées ton exécutable en lui donnant le nom de MaDLL.DLL (C'est un exemple)
■ Code pour appeler la DLL : TestMaDLL.pbEt bimmmMMmm ...... ça fonctionne ^^.
■ Code de la DLL : MaDLL.pb
Code : Tout sélectionner
ProcedureDLL Addition(x,y)
ProcedureReturn(x+y)
EndProcedure
1 - Option de compilation : Format de l'exécutable -> Share DLL
2 - Tu crées ton exécutable en lui donnant le nom de MaDLL.DLL (C'est un exemple)
■ Code pour appeler la DLL : TestMaDLL.pb
Code : Tout sélectionner
Enumeration
#MaDLL
EndEnumeration
If OpenLibrary(#MaDLL, "madll.dll")
Debug CallFunction(#MaDll, "Addition", 40, 20)
CloseLibrary(#MaDLL)
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
Super, merci Falsam 
Par contre j'aurais voulue utiliser
"Import" plutôt, plus flexible

Par contre j'aurais voulue utiliser
"Import" plutôt, plus flexible

Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Import avec une lib oui mais pas avec une DLL. (Sauf erreur ou omission de ma part)
Help a écrit :For advanced programmers. Import : EndImport allows to easy declare external functions and variables from a library (.lib) or an object (.obj) file.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
Oui exacte Falsam c'est bien ça.
Et aussi comment partager des variable entre le programme Main et la Dll ?
Par exemple le Main appel une Dll qui a une fenêtre avec des champs
comment je retourne le contenue de ses champs au programme Main ?
Faut une variable, structure ?
Et aussi comment partager des variable entre le programme Main et la Dll ?
Par exemple le Main appel une Dll qui a une fenêtre avec des champs
comment je retourne le contenue de ses champs au programme Main ?
Faut une variable, structure ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Si tu ne veux pas utiliser de fonctions comme CallFunction() dans ton code principale, tu peux créer un include qui contiendra des prototype de ta dll.
Exemple pour la fonction addition de la dll.
Exemple pour la fonction addition de la dll.
Code : Tout sélectionner
;// Ton include
Global MaDLL = OpenLibrary(#PB_Any, "madll.dll")
If MaDLL
Prototype.i ProtoAddition (x.i, y.i)
Addition.ProtoAddition = GetFunction(MaDLL, "Addition")
EndIf
;// Ton code principale
Debug Addition(2,3)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Et parce que j'ai dit des bétises dans ma premiere réponse, je vais te répondre pour la solution avec la fonction Import()
Quand tu as crée MaDLL.Dll, lecompilateur génére aussi une lib. Donc la fonction import fonctionne.
Le code TestImportMaDLL.pb à sauvegarder dans le dossier contenant ta DLL.
Quand tu as crée MaDLL.Dll, lecompilateur génére aussi une lib. Donc la fonction import fonctionne.
Le code TestImportMaDLL.pb à sauvegarder dans le dossier contenant ta DLL.
Code : Tout sélectionner
Import "MaDLL.lib"
Addition(x.i, y.i)
EndImport
Debug Addition(2, 3)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
Merci et pour les variables, la partage de donné ?
J'voudrait faire un programme à base de blugins avec des Dll.
J'voudrait faire un programme à base de blugins avec des Dll.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Commence par essayer de mettre ta fenêtre dans une DLL et d'essayer de l'ouvrir depuis un main tout en intégrant la boucle événementielle et poste un code simple. (si ça fonctionne) 

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
C'est bon c'est fais ça 
Mais je ne sais pas comment faire pour partager des données...

Mais je ne sais pas comment faire pour partager des données...
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Il est ou le code ? ^^falsam a écrit :et poste un code simple.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
Il est en court, je commence juste !J'voudrait faire un programme à base de blugins avec des Dll.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Import
Alors un exemple sans savoir si c'est vraiment ça que tu veux.
■ Code de la dll contenant une fenetre ainsi que deux valeur à récupérer.
■ Code de ton main.
■ Code de la dll contenant une fenetre ainsi que deux valeur à récupérer.
Code : Tout sélectionner
ProcedureDLL ShowWindow()
OpenWindow(0, 0, 0, 300, 300, "Fenetre de ma dll", #PB_Window_ScreenCentered)
StringGadget(0, 20, 20, 80, 22, "A récupérer 0")
StringGadget(1, 20, 50, 80, 22, "A récupérer 1")
EndProcedure
ProcedureDLL.s GetValue(Gadget.i)
ProcedureReturn GetGadgetText(Gadget)
EndProcedure
Code : Tout sélectionner
Import "MaDLL.lib"
ShowWindow()
GetValue(Gadget.i)
EndImport
OpenWindow(0, 0, 0, 500, 500, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ShowWindow() ;
Debug PeekS(GetValue(0))
Debug PeekS(GetValue(1))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Import
Merci Falsam, ton exemple fonctionne.
Voici le début de mon programme, tu verra que ça marche pas comme j'ai fais.
C'est la première fois que je fais ça.
Merci de ton aide
http://www.aht.li/2908075/PureAssictance_V1.zip
Voici le début de mon programme, tu verra que ça marche pas comme j'ai fais.
C'est la première fois que je fais ça.
Merci de ton aide

http://www.aht.li/2908075/PureAssictance_V1.zip
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Import
Salut Shadow,
Mon tuto était plutôt l'inverse créer une Dll à partir d'un module. Il suffis simplement dans le code de la Dll d'inclure le module (Xinclude) de créer une fonction dans la Dll pour chaque fonction déclarée public du module en appelant la dite fonction (du module) le compilateur se chargera de tous le reste.
Mon tuto était plutôt l'inverse créer une Dll à partir d'un module. Il suffis simplement dans le code de la Dll d'inclure le module (Xinclude) de créer une fonction dans la Dll pour chaque fonction déclarée public du module en appelant la dite fonction (du module) le compilateur se chargera de tous le reste.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège