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. .
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
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. –
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