DLL utilisant des bibliothèques PB

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

DLL utilisant des bibliothèques PB

Message par Guillot »

salut tout le monde,

j'ai mis au point de nombreuses fonctions pour la création de mesh et de texture
je voulais vous les proposer sous forme d'une DLL, mais j'ai pas réussi
je me demande si il est possible d'utiliser des fonctions provenant des bibliothèques PB (3D, 2ddrawing, vectordrawing) dans une DLL

l'un d'entre vous à t-il essayé / reussi
je ne connais rien dans le domaine des DLL, si quelqu'un peut m’éclairer


j'étais parti (bille en tete)

avec ça pour la DLL ("test.dll"):

Code : Tout sélectionner

ProcedureDLL init3d()
  InitEngine3D() 
  InitSprite() 
  ProcedureReturn 1
EndProcedure

ProcedureDLL test3d(mesh.i)
  CreateCube(mesh,2)
  ProcedureReturn 2
EndProcedure

ProcedureDLL testdrawing(output.i)
  StartDrawing(output) 
  Circle(300,300,100,0)  
  StopDrawing()
  ProcedureReturn 3
EndProcedure

ProcedureDLL testvdrawing(output.i)
  StartVectorDrawing(output)  
  AddPathCircle(300,300,100)
  VectorSourceColor($ff000000)
  StrokePath(1)
  StopVectorDrawing()
  ProcedureReturn 4
EndProcedure

et ça pour la tester :

Code : Tout sélectionner

If OpenLibrary(0, "test.dll")=0:MessageRequester("!!","erreur dll"):End:EndIf

Prototype.i init3d()
Prototype.i test3d(mesh.i)
Prototype.i testdrawing(output.i)
Prototype.i testvdrawing(output.i)


init3d.init3d=GetFunction(0,"init3d")
test3d.test3d=GetFunction(0,"test3d")
testdrawing.testdrawing=GetFunction(0,"testdrawing")
testvdrawing.testvdrawing=GetFunction(0,"testvdrawing")
;======================================================================================================

; ;init3d() 
;   InitEngine3D() 
;   InitSprite() 
; 
; OpenWindow(0, 0, 0, 800,600, "Exemple de Tube 3D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; OpenWindowedScreen(WindowID(0), 0, 0, 800,600, 0, 0, 0)
; CreateLight(#PB_Any, RGB(25, 25, 180), -5, 10, 5, #PB_Light_Point)
; CreateCamera(0, 0, 0, 100, 100)
; MoveCamera(0, 2, 4, 3, #PB_Absolute | #PB_Local)
; CameraLookAt(0, 0, 0, 0)
; 
; CreateTube(0, 0.5, 0.4, 0.2)
; ;Debug test3d(0)
; CreateEntity(0, MeshID(0), #PB_Material_None)
; Repeat
;   RenderWorld()
;   FlipBuffers()
; Until WaitWindowEvent(1) = #PB_Event_CloseWindow


OpenWindow(0, 0, 0, 800,600, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0,0,0,800,600)
LoadFont(0, "arial", 20)

;Debug testdrawing(CanvasOutput(0))
Debug testvdrawing(CanvasVectorOutput(0))


Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: DLL utilisant des bibliothèques PB

Message par Zorro »

tout est possible
sauf ça :
Est-il permis d'utiliser des DLL réalisées avec PureBasic dans d'autres projets?

Généralement oui. Vous pouvez créer des DLL incluant des commandes PureBasic pour vos propres projets sans aucune restriction. Mais il n'est pas permis de publier des Dll simples "wrapper" pour inclure les commandes PureBasic dans d'autres langages de programmation.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: DLL utilisant des bibliothèques PB

Message par Ar-S »

J'ai jamais testé. En revanche, pourquoi ne pas créer un fichier module plutôt qu'une DLL ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: DLL utilisant des bibliothèques PB

Message par Guillot »

à zorro:
je comptais faire une DLL destinée à PB, donc pas de probleme d'ordre 'legal'
le probleme est d'ordre technique

à Ar-s:
je reconnais que ça peut paraître un peu con de ne pas donner le code source
c'est juste que j'aurais voulu laisser l'exclusivité de ces fonctions à PB
si je donne les sources, ça sera facilement adaptable dans d'autres langages
ok, c'est un peu présomptueux, d'autant qu'il n'y a rien de revolutionnaire...
le principal intérêt est de pouvoir creer des décors generé uniquement par code, donc tres rapidement et simplement
et de pouvoir proposer des jeux de seulement quelques mega avec des décors correctes
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: DLL utilisant des bibliothèques PB

Message par comtois »

Guillot a écrit :le principal intérêt est de pouvoir creer des décors generé uniquement par code, donc tres rapidement et simplement
et de pouvoir proposer des jeux de seulement quelques mega avec des décors correctes
Et pourquoi ne pas les ajouter dans la lib 3D de PureBasic directement ?

[EDIT]
J'ai parlé trop vite, je devine pourquoi :)
Tu n'as pas accès aux autres lib de PB, et tes fonctions utilisent la lib 2DDrawing et VectorDrawing ? c'est ça ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: DLL utilisant des bibliothèques PB

Message par Guillot »

à comtois :
oui, je peux pas l'integrer dans l' engine3d.dll
mais je pense pas que ce soit probleme
les commande de PB sont, je pense, écrites en PB
il suffirait d'ajouter les miennes
faudrait interroger fred sur la possibilité de proposer des fonctions ecrites en PB
mais concernant mes fonctions sur les meshs et textures, je pense que c'est trop tot
j'aimerai, avant, pouvoir les adapter a des besoins auquels j'ai pas encore penser
ça serai donc bien d'attendre les retours des utilisateurs puis de proposer des fonctions 'mature',
qui prennent en compte les besoins de chacun (dans la mesure du possible bien sur)
ça eviterai de les modifier à chaque nouvelle version de PB
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: DLL utilisant des bibliothèques PB

Message par comtois »

non il n'y a que l'éditeur qui est écrit en PB, les fonctions de PB sont écrites en C, regarde dans ton répertoire PureBasic\SDK\VisualC pour avoir des exemples.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Répondre