SFML statique vs dynamique de chargement de bibliothèque. Comment visual studio préciser cela?
Je suis en train d'essayer d'obtenir la SFML le programme d'installation de Visual Studio. J'ai suivi le tutoriel ici: http://www.sfml-dev.org/tutorials/2.4/start-vc.php
J'ai obtenu au point où j'ai spécifié l'emplacement de la bibliothèque et qui .lib est que je veux utiliser.
Cependant, je suis confus à la partie où il est dit que les actions précédentes ont simplement le programme d'installation le projet de charger les bibliothèques de manière dynamique. Cela me confond. N'ai-je pas juste spécifié l' .fichiers lib? Et ne le sont pas .lib les fichiers de bibliothèques statiques? Pourquoi le projet est configuré pour charger dynamiquement une bibliothèque d'après la spécification statique fichiers lib?
De plus, quand je vais à exécuter le projet de démonstration. Il précise que le dll ne peut être trouvée...
Le tutoriel puis va sur l'état que si vous voulez lier statiquement à la bibliothèques, vous devez spécifier différents .fichiers lib et de définir une macro du préprocesseur.
Donc ma question: Comment fonctionne exactement Visual Studio décider si oui ou non la bibliothèque vous l'avez souligné, va être chargé de manière statique ou dynamique? Il semble comme si je voulais charger une bibliothèque dynamique, je voudrais faire pointer vers le répertoire contenant les dll, pas de libs.
Toute aide?
Vous devez vous connecter pour publier un commentaire.
VStudio n'a pas à décider de la façon de charger (ou mieux: disons que utilisation) une certaine bibliothèque. Il utilise la bibliothèque a été construite (statique ou dynamique). Lors de la construction d'une bibliothèque avec VStudio la sortie (presque) toujours contenir une .lib fichier.
Vérifier la 2ème de balle de [AINSI,]: Erreurs lors de la liaison à protobuf 3 sur MSVC 2013
(@CristiFati réponse), qui décrit brièvement la différence entre les 2 types de bibliothèques. Pour plus d'information sur les bibliothèques de liens dynamiques vérifier [MME Docs]: Bibliothèques de liens Dynamiques. Le .lib fichiers sont utilisés par VStudio lors de la construction de votre application (à lien temps pour être plus précis). Maintenant, si tout se passe bien, votre application est construite (vous aurez un .exe fichier dans votre répertoire de sortie de projet).
Lors de l'exécution (et correction) que l'exécutable, si elle utilise les bibliothèques dynamiques, ces bibliothèques .dll fichiers doivent être présents dans l'un des endroits indiqués sur [MME Docs]: Dynamic-Link Library Ordre de Recherche (pour garder les choses simples, je vous suggère de les copier dans le même dossier que votre .exe fichier - note que c'est pour la démonstration seulement, il ne faut pas le moyen de déployer des applications).
Une bibliothèque est définie comme statique ou dynamique lorsqu'il est construit et la SFML site web fournit des deux versions (Vous pouvez spécifier que vous souhaitez lors de la construction de la source).
Lorsque vous exécutez l'application, il se regarde dans le système et son propre répertoire de la bibliothèque dynamique de fichier pour la SFML.
Vous pouvez utiliser xcopy dans le PostBuild des paramètres de projet de copier le .dll dont vous avez besoin dans le répertoire cible. Par exemple, cela permet de copier tous les debug .dll dans le répertoire avec la .exe:
Le processus est similaire pour les versions Release, mais vous aurez besoin d'un fichier pour spécifier que vous souhaitez exclure .dll se terminant avec -d