Je sais que cette question a déjà été posée à d'autres endroits, mais j'ai des problèmes avec MS Visual Studio 2010. J'ai développé un exécutable C++, mais si j'exécute la version Release sur un ordinateur ne disposant pas de la bibliothèque d'exécution VC++. (le fichier msvcr100d.dll), le programme "Impossible de démarrer car le fichier msvcr100d.dll est absent de votre ordinateur".
C'est bizarre pour deux raisons:
Comment puis-je créer un package pour la bibliothèque d'exécution avec mon exécutable afin de pouvoir l'exécuter sur des machines sur lesquelles MS VC 2010 ou le logiciel redistribuable ne sont pas installés)?
Je sais que l’inclusion d’une copie de la DLL étant donné qu’elle ne sera jamais mise à jour) constitue un risque pour la sécurité, mais mon objectif est simplement d’envoyer cet exécutable à quelques amis à court terme.
Vous ne devriez certainement pas avoir besoin de la version de débogage du CRT si vous compilez en mode "release". Vous pouvez dire qu'il s'agit des versions de débogage des DLL car elles se terminent par un d
.
Plus précisément, la version de débogage est pas redistribuable, il n’est donc pas aussi simple que de la "conditionner" avec votre exécutable ou de compresser ces DLL.
Assurez-vous que vous compilez tous les composants de votre application en mode "release" et que vous liez la version correcte du CRT. et toute autre bibliothèque que vous utilisez (par exemple, MFC, ATL, etc.).
Vous aurez , bien sûr, besoin de msvcr100.dll
(notez l’absence du suffixe d
) et quelques autres s’ils ne sont pas déjà installés. Demandez à vos amis de télécharger le fichier Visual C++ 2010 redistribuable (ou x64 ), ou incluez-le automatiquement dans votre application en créant un programme d'installation.
Pour moi, le problème est apparu dans cette situation:
J'ai installé VS2012 et je n'ai plus besoin de VS2010. Je voulais nettoyer mon ordinateur et supprimer les fichiers exécutables de VS2010, pensant qu'aucun autre programme ne l'utiliserait. Ensuite, j'ai voulu tester mon DLL en le rattachant à un programme (appelons-le programme X). J'ai reçu le même message d'erreur. Je pensais avoir fait quelque chose de mal lors de la compilation de la DLL. Cependant , le vrai problème, c’est que j’ai attaché le DLL au programme X et que le programme X a été compilé dans VS2010 avec les informations de débogage. C’est pourquoi l’erreur a été renvoyée. J'ai recompilé le programme X dans VS2012 et l'erreur était partie.
Ce problème expliqué dans MSDN Library et, si je comprends bien, installer le progiciel redistribuable de Microsoft peut aider.
Mais parfois, la solution suivante peut être utilisée (en tant que solution côté développeur):
Dans votre Visual Studio, ouvrez Project properties -> Configuration properties -> C/C++ -> Code generation
et changer l'option Runtime Library
à /MT
au lieu de /MD
Les versions de débogage des dll de bibliothèque vc ++ ne sont PAS destinées à être redistribuées!
Les versions de débogage d'une application ne sont pas redistribuables et les versions de débogage des DLL de bibliothèque Visual C++ ne sont pas redistribuables. Vous pouvez déployer des versions de débogage d'applications et des DLL Visual C++ uniquement sur vos autres ordinateurs, dans le seul but de déboguer et de tester les applications sur un ordinateur sur lequel Visual Studio n'est pas installé. Pour plus d'informations, voir Redistribution de fichiers Visual C++.
Je fournirai également le lien: http://msdn.Microsoft.com/en-us/library/aa985618.aspx
J'ai eu la même erreur.
Je faisais référence à un VS2010 DLL dans un projet VS2012.
Il suffit de recompiler le DLL sur VS2012 et tout va bien maintenant.