2010-09-06 9 views
4

Je suis nouveau à SDL, et je suis juste curieux de savoir pourquoi SDL utilise des bibliothèques statiques et dynamiques? Je veux dire, quelles fonctions sont dans sdl.dll, et pourquoi est-il lié dynamiquement au lieu de statiquement? Merci.Qu'est-ce que SDL.dll?

+0

Buh? Il est lié dynamiquement pour les mêmes raisons que n'importe quelle bibliothèque ** serait reliée dynamiquement ... –

+5

"Papa, pourquoi le ciel est-il bleu?" "Oh, chérie, c'est bleu pour les mêmes raisons que n'importe quel ciel pourrait être bleu." –

Répondre

5

SDL.dll contient les implémentations de toutes les fonctions que vous utilisez à partir de SDL, telles que SDL_Init() et SDL_SetVideoMode(). Il est lié dynamiquement pour permettre le remplacement direct de la bibliothèque avec une version plus récente, sans rompre la compatibilité avec les applications existantes — l'interface SDL ne change pas presque aussi souvent que l'implémentation . Les bibliothèques dynamiques assurent le découplage entre l'interface et l'implémentation, au prix de tout ce qui est nécessaire pour les charger dynamiquement: recherche d'un fichier, chargement, dénonciation s'il n'est pas disponible, etc.

Une application est plus modulaire en utilisant des bibliothèques dynamiques, et l'exécutable aura tendance à rester petit. Il est possible de lier statiquement à SDL, dans quelles circonstances la taille de votre exécutable inclura la taille (modeste) de la bibliothèque SDL et la mise à niveau vers une version plus récente de SDL nécessitera la recompilation de votre application.

+0

Savez-vous comment relier statiquement SDL.lib (dll)? Je sais, ce fichier .exe cible aura le volume de DLL (300kB), mais pour moi, il est préférable de manipuler avec un fichier exe. Je me développe sous environnement Pelles C. L'implémentation de SDL est très simple: copiez .h .lib. dll fichiers dans la structure existante comme dans LCC ou un autre compilateur win32. –