Je suis nouveau à la programmation C ++ et venais de finir de faire une calculatrice simple. J'ai décidé de le partager avec mes amis et après plusieurs tentatives de la compilation de la compilation en mode de libération. Cependant, même en mode libération, il dépend toujours du MSVCP110D.dll. Je me demandais s'il y avait un moyen de résoudre ce problème? P>
3 Réponses :
1) msvcp110d.dll est l'exécution .dll pour la version "Débogage" de la bibliothèque d'exécution MS C. Il semble donc que votre .exe n'aurait peut-être pas été construit pour "libérer" correctement après tout. P>
2) Voici des informations pour le "Visual Studio Runtime Redistributable": P>
http://www.microsoft.com/en- US / Download / Détails.aspx? Id = 30679 P>
3) Voici plus d'informations sur ce problème particulier: P>
Malheureusement, le MSVCP100D.DLL est une DLL de débogage et ce n'est pas inclus Dans le package redistrautable Microsoft Visual C ++. C'est parce que Normalement, la version de débogage n'est pas une sortie à autre que le développeur. Le développeur l'a installé par défaut avec Visual Studio. P>
Vous pouvez compiler votre projet dans "Release" afin que tout dll dont vous aurez besoin sera inclus dans le package redistrautable Microsoft Visual C ++. P>
sinon vous pouvez faire le lien statique de toutes les bibliothèques (spécifier / mt dans Libération et / MTD dans la configuration de débogage dans les options du compilateur): mais personnellement, je ne le recommande pas de savoir que vous avez mis dans l'exécutable beaucoup informations (utilisées par le débogueur) qui ralentira votre application. P> blockQuote>
résolu pour moi. Est tombé sur un problème similaire récemment. La chose la plus étrange que ma DLL résultante dépendait de MSVCR100.dll (sans «D»), ce qui avait raison parce que j'ai changé / MDD sur / MD, mais également dépendant de MSVCP100D.dll, qui ne semblait pas juste pour la même raison. Après une longue enquête, j'ai constaté que cela dépend des définitions de préprocesseur. Changer _debug au débogage a résolu le problème pour moi.
Je suppose que votre problème est avec une dépendance à la version de débogage de la DLL et non de la dépendance à la DLL elle-même. P>
Il est fort probable que vous faites une de ces 2 choses p>
compilation avec liaison avec msvcpd.lib p> li>
ol>
Lorsque vous compilez avec MSVCP (D) *. DLL est la version DLL de la bibliothèque C ++ standard. P>
Si, à la place, votre problème est avec une dépendance à n'importe quelle version de la DLL i.e. Vous souhaitez créer un lien staticly avec la bibliothèque C ++, vous pouvez compiler votre programme avec / ddebug code> ou / d_debug code> ou p> li>
/ ddebug code> ou / d_debug code> et #include code> Ing l'un des en-têtes standard C ++, puis msvcpd.lib est tiré dans (avec un #pragma (lib) code> qui conduit à une dépendance sur MSVCPD ***. DLL. P>
_static_cpplib code>. p>.
Je suis désolé, je suis incroyablement nouveau à cela. Mais comment allais-je utiliser statiquement la liaison de la DLL? Lorsque je l'ai compilé, j'ai changé le type de compilation de débogage à la libération. Il a ensuite créé un dossier de publication avec mon .exe et .CPP contenus dans.
@ user2396111 Cliquez avec le bouton droit de la souris sur Solution -> Propriétés, C / C ++, Préprocesseur-> Ajouter _static_cpplib aux différentes définitions de préprocesseur existantes. De plus, lorsque vous êtes là, vérifiez si le débogage ou _debug est déjà défini.
Ce n'est pas la case, une option obsolète de VS2012. C / C ++, génération de code, bibliothèque d'exécution = / mt
@Hanspassant, je souhaite juste que vous sachiez que vous avez sauvé 6 heures de ma vie
Utilisez-vous des bibliothèques supplémentaires? Peut-être avez-vous inclus une version de débogage d'un fichier DLL avec votre exécutable. P>
Les seules ressources extérieures que je tire sont #include "stdafx.h" #include #include #include mais j'avais l'impression que, en mode de libération, cela supprimerait tout besoin de ressources extérieures et serait complètement couru à l'intérieur de lui-même.
Vous ne vous aidez pas vous-même, ni nous, en n'expliquant pas comment vous savez i> que vous avez une dépendance sur msvcp100d.dll. Vous DO B> Donne une dépendance dans la version de version sur msvcp110.dll, elle contient le code de iostream. Vous devez le copier avec votre .exe, msvcr110.dll aussi. Ou vient de construire avec / mt en vigueur, bien pour des programmes simples qui n'utilisent pas de DLL.
Avez-vous essayé d'utiliser Dépendency Walker?