Visual Studio: Comment spécifier les différentes bibliothèques d'exécution pour l'éditeur de liens? (/MTd, Tdm, etc)
Je suis un lien vers un petit nombre de bibliothèques dans VS2008. Si ma connaissance de l'éditeur de liens est correct, Dmt est la liaison statique et le MDd est pour la liaison dynamique (DLL.) Mon objectif est de lier statiquement un certain nombre de bibliothèques et de liens dynamiques les autres. Les options du projet semble être la seule à avoir un réglage pour toutes les bibliothèques dans l'éditeur de liens d'entrée. Comment puis-je faire?
Je ne comprends pas comment cela m'aide. Il n'y a pas de pièces de il y sur la spécification des options du linker par la bibliothèque.
OriginalL'auteur Thomas Havlik | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Votre projet sera donné un bon Bibliothèque Runtime C par défaut après l'avoir configuré, en fonction de la façon dont vous répondez le Nouveau Projet de l'Assistant. Vous pouvez inspecter et modifier cela (si nécessaire) comme suit:
D'autres bibliothèques peuvent être liés toutefois vous le souhaitez, vous venez de spécifier la bibliothèque de lien à sous de l'éditeur de liens, d'Entrée, de Dépendances Supplémentaires.
Même si vous liez à une DLL, il y aura toujours une .Fichier LIB (de la forme correcte pour une DLL) pour résoudre les références externes, sauf si vous êtes manuellement chargement de la DLL et la découverte requis en fonction des points d'entrée.
Vous avez besoin pour vous assurer que les fichiers LIB-vous un lien pour utiliser le même CRT que votre application ne, ou les choses peuvent aller inattendue de mal.
Découvrez Hans réponse pour complément d'informations, cliquez ici. Le
/Mxxx
drapeau détermine seule version CRT votre projet en cours lien à chaque application dispose d'un lien vers le CRT. autre les bibliothèques que vous souhaitez utiliser sont nommés dans les propriétés de votre projet - elles peuvent être statiques ou dynamiques, mais vous devez vous assurer que votre application CRT DLL prêt si vous prévoyez faire un lien vers une Dll. Plus clair?Je crois que je suis la compréhension de ce mieux 🙂 merci à vous pour votre patience, les gars. Spécification /Mxxx sur votre projet n'a pas d'incidence sur la façon dont l'éditeur de liens accepte une entrée, il change la façon dont elle est liée à la CRT?
Vous l'avez compris, oui. Jetez un oeil à cet article @James référencé, c'est la liste de candidats pour la liaison CRT.
Votre terminologie est mélangé dans ce commentaire -
static/dynamic
,debug/release
sont les appariements vous avez besoin de s'inquiéter. Si vous faites tous la liaison dynamique, vous devez utiliser CRT pour les Dll (pas statique CRT). Si vous sont un mélange de debug et release bibliothèques, votre kilométrage peut varier, et je m'attends à des problèmes.OriginalL'auteur Steve Townsend
Non, vous êtes de mélange. Le /MD vs /MT options n'est pertinente que pour qui version CRT vous lien. Il y a deux, la version statique (/MT), dont vous devez utiliser uniquement si vous n'utilisez pas toutes les Dll dans votre projet. Et la version de la DLL, une version que chaque binaire dans votre processus peuvent partager de sorte que vous n'aurez pas de tas de répartition de la misère. Le genre de misère que vous obtenez lorsque la mémoire est allouée par un module et libérée par un autre.
En choisissant vos propres bibliothèques est entièrement à vous. Le mélange et l'appariement est très bien, l'éditeur de liens est juste un autre type de .lib. Une bibliothèque d'importation au lieu d'une bibliothèque statique. Il suffit de garder à l'esprit d'utiliser /MD lorsque vous utilisez Dll.
La corruption de segment est de loin la raison la plus courante pour un destructeur de crash. Mais ouais, l'avertissement spécifique j'ai donné des ajustements. Mélange de debug et release peut causer la misère avec STL itérateur de débogage, mais qui, généralement, des bombes beaucoup plus tôt.
OriginalL'auteur Hans Passant
Les options du linker votre décrivant sont pour le CRT. La version statique permettra de limiter le partage de la mémoire entre les modules.
Toutes les autres bibliothèques que vous utilisez devra être lié en se basant sur le .fichiers lib vous fournir(ou pas) à l'éditeur de liens.
Il y a 3 façons d'utiliser un MS de la bibliothèque de
OriginalL'auteur Greg Domjan