godrik : sans .lib tu peux utiliser une DLL sans trop de problème si son interface est en C et relativement propre (i.e. les noms de fonctions ne sont pas décorés). Il suffit d'un header avec les fonctions exporté par la bibliothèque et le mot clef declspec(dllimport) (à peu près). C'est du chargement dynamique "statique" (i.e. fait par le loader sans intervention du programmeur).
Les fichiers .lib peuvent être soit des module pour chargé correctement une bibliothèque, dans ce cas là ça permet d'utiliser des bibliothèques avec des interfaces plus complexes, mais ça ne contient pas tout le code de la DLL et donc il n'est quand même pas possible de lier statiquement le programme à la dll. Mais un .lib peut aussi être une version prévu pour être liée statiquement d'une dll.
guyver : il ne s'agit pas ici de porter une application d'une plateforme à une autre, mais, j'imagine, de la "portabiliser", c'est à dire de permettre qu'elle puisse être exécuter de n'importe où (clef usb, répertoire sans privilège particulier, etc.) sans installation.