e.exe
est liée à ma bibliothèque statique personnalisée, c.lib
, qui utilise l'API Win32 définie dans w.dll
. w.dll
se trouve dans C: \ Windows \ System32 et sa bibliothèque d'importation est w.lib
, située dans le répertoire Windows SDK. Shell w.lib
être répertorié comme Dépendance supplémentaire dans c.lib
ou e.exe
projet? (e.exe
se construit avec succès dans les deux cas.) Quelle est la meilleure pratique et pourquoi? Je suppose que e.exe
ne devrait pas connaître w.lib
.Bibliothèque statique avec dépendances
c.lib
est destiné à être partagé entre un groupe de développeurs seulement (à ne pas expédier aux clients).
ESSAI: J'utilisé VS2008 et dumpbin utilitaire pour tester les deux cas, et voici les résultats:
- Cas 1:
w.lib
ajouté comme Dépendance supplémentaire dansc.lib
projet.
dumpbin /archivemembers c.lib
listes de sortie de deux décalages dans w.dll
et fichiers OBJ de c.lib
projet en tant que membres d'archives.
- Cas n ° 2:
w.lib
pas ajouté comme dépendance supplémentaire dansc.lib
maise.exe
projet:
Cette fois, dumpbin sortie ne contient que des fichiers OBJ de c.lib
et la taille de c.lib
est plus petite que dans l'affaire 1
(c.lib
a été ajouté comme dépendance supplémentaire dans w.exe
projet dans les deux cas)
NOTE. J'utilisé w.lib
et w.dll
ici que les noms fictifs, génériques pour les bibliothèques de Windows, mais ils pourraient être par exemple Userenv.lib et Userenv.dll ou Version.lib et Version.dll ...
Nous vous remercions de votre réponse complète. Ma présomption initiale était fausse - je pensais qu'il était souhaitable de ne pas être conscient des dépendances de lib, mais maintenant, quand je le regarde du point de vue * import library + code *, il est logique de faire savoir à l'exe quel est son code (qui inclut le code de static lib) dépend de. –
Je suis confus par cette réponse. N'est-il pas courant de construire des bibliothèques sur des bibliothèques? Toute bibliothèque étendue serait considérée comme "bibliothèque d'importation + code". Je pense qu'il est préférable de cacher les détails de la bibliothèque sur laquelle on se base. – jwalk