En fait, il existe 2 types de fichier .lib
1/
Premier cas,
Il s'agit juste d'un petit fichier .lib accompagnant une DLL. Ce fichier n'est utile qu'au programmeur, pas à l'utilisateur final.
Il permet, et c'est très pratique, de charger les fonctions de la DLL dans le source purebasic de manière beaucoup plus naturelle et économique en nombre de lignes qu'avec l'ouverture de la DLL par le classique Open/CloseLibrary(). C'est tellement pratique que lorsqu'une DLL qui m'intéresse n'est pas livré avec ce petit fichier .lib, je boude un peu la DLL.
Dans tous les cas, ce fichier .lib est automatiquement créé par purebasic lorsqu'on créé nous meme une DLL, histoire de faciliter son utilisation par la suite dans purebasic. Ceci dit la DLL est toujours indispensable et doit etre distribuer avec le programme.
par exemple prenons une DLL 'helper.dll' qui contient une fonction box(message.s)
Classiquement on programmera la DLL comme ceci :
Code : Tout sélectionner
Prototype.l proto_box(message.s)
If OpenLibrary(0, "helper.dll")
box.proto_box = GetFunction(0, "box")
CloseLibrary(0)
EndIf
Si on a la chance d'avoir le fichier .lib, c'est beaucoup plus pratique (à mon avis) comme ceci :
Code : Tout sélectionner
Import "helper.lib" ; à noter le .lib au lieu .dll
box.l(message.s)
EndImport
Ou bien si on veut renommer la fonction à notre convenance :
Code : Tout sélectionner
Import "helper.lib" ; à noter le .lib au lieu .dll
dialogue.l(message.s) As "box@4" ; 4 est le nombre d'octets occupés par l'ensemble des arguments (4 pour 1 Long)
EndImport
2/
Deuxieme cas,
Le fichier .lib est une sorte de DLL (D comme Dynamic) mais cette fois cette lib est un fichier Static ou toutes les fonctions sont DANS le fichier .lib (qui pour le coup est beaucoup plus gros que dans le 1er cas).
Donc ici plus besoin de DLL, le .lib est intégré dans l'exécutable, caché de l'utilisateur final. Très pratique aussi.
Dans la pratique, çà se programme comme dans le 1er cas.
Les 2 cas sont exploitables avec PureBasic.
J'ai déjà utiliser les 2 avec succès mais cela ne fonctionne pas à tous les coup. Ca dépends comment a été compilé le fichier .lib
Querstion vitesse, çà ne change rien en principe que ce soit pour une DLL, une LIB de linkage (1er cas) ou une LIB statique (2eme cas).