2009-04-30 6 views
3

J'ai une bibliothèque statique (fichier .lib) sur la plate-forme Windows, je veux connaître la version dépendante de la bibliothèque CRT lorsque la bibliothèque est construite. Je n'ai aucun code source du fichier .lib, des idées?dépendances de la bibliothèque statique

merci à l'avance, George

Répondre

5

bibliothèques statiques ne sont pas ce genre de dépendances. Lorsque la bibliothèque est construite, elle n'est en aucune façon liée à l'exécution, tout ce qu'elle sait, ce sont des déclarations de fonctions dans les fichiers d'en-tête de l'implémentation, qui ne fournissent aucune information de version. Toutefois, en supposant que la bibliothèque est au format MS, vous devriez voir avec quels drapeaux la bibliothèque a été construite en l'ouvrant dans un éditeur de texte (faites une sauvegarde avant de faire cela). Vous êtes à la recherche d'une ligne comme celui-ci:

cl.exe cmd -nologo -MTd -W3 -Gm -GX -ZI -DWIN32 -D_DEBUG (more stuff) 

Le drapeau -MTd vous dit que la bibliothèque a été compilé avec le support multithread de débogage. .

+0

J'ai rencontré l'erreur suivante lors de la liaison statique avec foo.lib, le message d'erreur est - avertissement LNK4098: defaultlib 'LIBCMT' est en conflit avec l'utilisation d'autres bibliothèques; utiliser/NODEFAULTLIB: bibliothèque, des idées quelle est la cause première? – George2

+0

Oui, l'une des bibliothèques et/ou applications a été créée avec un support multithread, l'autre ne l'était pas. Vous devez créer toutes les bibliothèques et applications avec le même modèle de thread. –

+0

Je suis confus, vous venez de mentionner static lib n'a rien à voir avec la bibliothèque d'exécution (debug/release/single threaded/multithread), pourquoi linker pense que la lib statique dépend d'un type différent d'exécution de modèle de thread, et signale cette erreur? Des méthodes pour voir quel type de bibliothèque d'exécution la bibliothèque statique est intégrée? – George2

Questions connexes