2010-07-13 5 views
0

Lors de la liaison d'un exécutable, s'il ne fait référence à aucun des symboles de l'une des DLL sur la ligne de liaison, dépendra-t-il encore de cette DLL lors de l'exécution?Ajout de bibliothèques supplémentaires sur la ligne de liaison

Pour rendre la question concrète, supposons que je construis une application à partir du projet Visual Studio foo.

Sous Propriétés du projet> Linker> Entrée> Dépendances supplémentaires que j'ai spécifié bar.lib, la bibliothèque d'importation pour bar.dll, même si elle n'est pas nécessaire de lier foo.exe avec succès.

Ai-je encore besoin de distribuer bar.dll avec mon application puisque je l'ai marqué comme une dépendance de liaison?

+0

Si l'éditeur de liens fait correctement son travail, il doit ignorer la DLL non référencée. Il existe un moyen facile de tester cela, créer un tel projet et ensuite voir s'il fonctionne si vous supprimez 'bar.dll'. – ChrisF

+0

Ou utilisez Dependency Walker (http://www.dependencywalker.com/) pour voir si votre application répertorie la DLL. –

Répondre

1

Non, ce n'est pas obligatoire.

Une bibliothèque d'importation uniquement une bibliothèque et l'EXE inclura uniquement les références aux fonctions utilisées. En passant pour vérifier cela, vous pouvez utiliser l'utilitaire DUMPBIN.EXE ou les dépendances walker (voir http://www.dependencywalker.com/) qui font partie des paquets Visual Studio. Tapez simplement DUMPBIN.EXE foo.exe /imports ou ouvrez foo.exe avec le dépendant des dépendances.

Questions connexes