A quoi sert le lua “stub” dll pour windows

Je cherche à incorporer Lua dans un projet C ++, et je suis un peu confus par la présence des deux binarys (lua51.dll et lua5.1.dll) dans la dissortingbution de Luabinaries .

Selon les docs …

Sous Windows, votre bibliothèque ou application doit être liée à une bibliothèque de stub. Une bibliothèque de talons est une bibliothèque contenant uniquement les déclarations de fonctions qui lieront votre DLL avec la DLL Lua.

Pourquoi? Je n’ai jamais eu besoin de DLL de stub avant de créer des liens avec des DLL tierces?

Une bibliothèque de talons est un fichier .lib , pas une DLL. Il contient des déclarations de fonctions pour toutes les fonctions exscopes dans la DLL, qui transmettent simplement l’appel dans la DLL elle-même. Donc, si vous lua51.dll une application que vous souhaitez lier avec lua51.dll , vous indiquez à l’éditeur de liens de lua51.lib lien avec lua51.lib , et tous les appels aux fonctions exscopes seront transférés vers la DLL. Si vous ne l’avez pas fait, vous obtiendrez beaucoup d’erreurs de “symboles externes non résolus” lors de la liaison.

Cela n’est nécessaire que lors d’une liaison statique avec une DLL (de sorte qu’elle soit chargée automatiquement lors de l’exécution de l’application). Il n’est pas nécessaire lors du chargement dynamic de la DLL avec LoadLibrary .

En ce qui concerne pourquoi ils ont deux DLL différentes, le manuel dit ceci:

Les packages DLL de LuaBinaries ont un proxy dll appelé “lua51.dll”. Il peut être utilisé pour remplacer d’autres “lua51.dll” publiés par d’autres dissortingbutions. Il transmettra simplement les appels au “lua5.1.dll”. Il n’y a pas de code source compilé impliqué dans le transfert.

Fondamentalement, certaines applications existantes établissent un lien avec lua5.1.dll alors que d’autres se lient à lua51.dll et souhaitent les prendre en charge. Dans tous les cas, cela n’est pas lié aux bibliothèques de stub.

Je crois que cela a à voir avec __declspec (importation) et __declspec (exportation) vs GetProcAddress. Cependant, je ne sais pas vraiment avec certitude.