Les différences entre dll et librairies

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Les différences entre dll et librairies

Message par Pacificator »

Bonsoir,
je suis nouveau dans ce forum, mais je vous lis depuis bien longtemps =)
je m'interresse a pure depuis quelques temps, et je me penche en ce moment a la création de librairies, avec tailbite...

voila mes questions

-quelle est la différence entre une librairie dite statique(userlibs) et et les librairies dynamique (dll) ?

-les variables d'une procedure d'une librairie semble etre indépendante par rapport a celles du programme principal, est-il possible d'utiliser des variables du programme principal dans une proceduredll ?

-si je place la commande Delay() dans une proceduredll, est-ce que ca stope tout le programme ou seulement la lib? en d'autre terme, les libs marchent-ils parrallèlement au programme, ou avec le programme?

voila=)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Salut,
quelle est la différence entre une librairie dite statique(userlibs) et et les librairies dynamique (dll) ?
Une DLL reste externe à ton programme. C'est un fichier à part.
C'est le but recherché d'ailleurs. Ca permet à d'autres programmes de l'utiliser.
Elle est dite dynamique parceque plusieurs programmes peuvent l'ouvrir / s'en servir en meme temps.
C'est l'OS (Windows) qui s'en charge de çà.

Une librairie, au sens Purebasic, celle que tu peux créer avec TailBite,
sera intégrer dans l'éxecutable pendant la compilation.
Donc pas de fichier externe, donc pas possible de le partager pour un autre programme.
Elle est dite statique parceque seul ton programme s'en sert.
les variables d'une procedure d'une librairie semble etre indépendante par rapport a celles du programme principal, est-il possible d'utiliser des variables du programme principal dans une proceduredll ?
comment çà ? je suis pas sûr de ce que tu demandes mais en principe non !
si je place la commande Delay() dans une proceduredll, est-ce que ca stope tout le programme ou seulement la lib? en d'autre terme, les libs marchent-ils parrallèlement au programme, ou avec le programme?
Oui ca stoppera ton programme. Tout appel à une fonction prends du temps processeur.
Une fonction ne retourne un résultat qu'une fois son travail accompli.
Pendant ce temps là ton prog attends.
Si ce que tu dis était vrai, la programmation serait ingérable.
Faire travailler une fonction 'en parallèle' à ton programme nécessite une action volontaire de ta part.
Les 'Thread' te permettent de faire çà.

:wink:
Image
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

ok, tu m'a bien éclairé =)
merci bien

sinon est il possible de creer des thread a partir de librairies ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Les différences entre dll et librairies

Message par nico »

Pacificator a écrit : les variables d'une procedure d'une librairie semble etre indépendante par rapport a celles du programme principal, est-il possible d'utiliser des variables du programme principal dans une proceduredll ?
Dans une librairie comme dans un programme, il faut distinguer les variables locales et les variables globales. Les variables globales sont accessibles des deux cotés mais tu dois fournir leurs adresses à ton programme ou ta librairie pour qu'ils puissent y avoir accès.
Dernière modification par nico le ven. 17/déc./2004 0:04, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Pacificator a écrit :ok, tu m'a bien éclairé =)
merci bien

sinon est il possible de creer des thread a partir de librairies ?
Une dll est comme un programme externe, tu peux créer des threads et même des ressources.
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

ok, je comprend mieux

et si par exemple, je veux récuperer les coordonnées d'une entitée, je peux le faire directement depuis une librairie? (sans les déclarer global)

quand on utilise: Result = EntityX(#Entity), la librairie va t'elle trouver les coordonnée de l'entitée déclarée dans le prog principal?

sinon au sujet des adresses des variables, si g bien compris, il faut utiliser des pointeur nan?
Dernière modification par Pacificator le jeu. 16/déc./2004 23:50, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Oui
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

ok :)
c génial, merci nico ^^

je vais pourvoir faire une librairie pour la gestion 3d, pour faciliter la vie =)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

T'as modifié ton post après que j'ai répondu, faut que je regarde ça!

Non
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

ah merde!
ca veut dire qu'il faut d'abord récuperer les coordonnées dans les prog principal, puis les mettre en global avant de pouvoir les utiliser dans la lib?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Le mieux , c'est de faire des essais simples, je n'ai jamais utilisé les fonctions de 2d, 3d de Pure.
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

je confirme ca marche ^^
il est possible de récuperer des valeurs en se referant aux objets ou camera du moteur 3d a partir d'une librairie, c une bonne nouvelle :D

merci nico de ton aide =)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Pacificator a écrit :ah merde!
ca veut dire qu'il faut d'abord récuperer les coordonnées dans les prog principal, puis les mettre en global avant de pouvoir les utiliser dans la lib?
C'est mieux de ne pas utiliser des variables globales. C'est préférable de passer les coordonnées en paramètres à la librairie.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Pacificator a écrit :je confirme ca marche ^^
il est possible de récuperer des valeurs en se referant aux objets ou camera du moteur 3d a partir d'une librairie, c une bonne nouvelle :D

merci nico de ton aide =)
Cool , enfin quelqu'un qui s'intéresse à la 3D :)

tu vas faire quoi comme lib ?
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

Salut comtois, j'ai vu ta lib sur les matrice, et c'est vraiment balèze =)
je cherche à faire une lib pour mieux gerer la 3d, dans sa globalité...
les commandes sont assez inspirés dark basic

par exemple là je fais les commandes:
CameraFollowEntity(#camera,#entity,distanceMin,DistanceMax,hauteur,vitesse,souplesse)
CameraTrajectory(#camera,vitesse,souplesse,x1,y1,z1,x2,y2,z2[,x3,y3,z3,curve])

en gros je cherche a faire des commandes et des outils pour faire des jeux 3d, là je bosse sur les déplacements dans l'espace, en essayant de donner une cetaine souplesse dans les mouvements, et ca permet d'éviter les calculs trigonométrique complexe. Je vais aussi faire des commandes pour faire des rotations en absolu. Puis ensuite je vais tenter de faire une lib pour gerer les animations des entiées, parce que ca a pas l'air de bien marcher... je vais peut etre aussi faire un systeme climatique, mais c'est pas pour tout de suite et plus tard, je projette de faire un éditeur de terrain, ou on place les décors sur le terrain avec un simple click, mais là je sais pas comment je vais faire...

J'essaye de combler les lacunes du moteur 3d de pure.
quoi qu'il en soit c'est pas pour tout de suite...mais dès que j'aurais fini avec les déplacements, je ferais une annonce.
Répondre