web-dev-qa-db-fra.com

Fichier MSVCR100d.dll manquant et exécutable Visual C ++

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:

  • Pourquoi essaie-t-il de créer un lien avec la version de débogage du redistribuable?
  • J'ai essayé d'appliquer ce correctif , en définissant le paramètre de bibliothèque d'exécution sur/MT au lieu de/MD (DLL multithread), mais cela n'a fait qu'aggraver le problème (si j'ai copié manuellement msvcr100d.dll, il a dit qu'il ne pouvait pas trouver msvcp110.dll).

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.

36
mgiuffrida

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.

42
Cody Gray

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.

2
tmighty

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

2
VolAnd

Habituellement, l'application qui manque le fichier .dll indique la version dont vous avez besoin - si cela ne fonctionne pas, téléchargez simplement le fichier Microsoft Visual C++ 2010 x86 ou x64 à partir de ce lien:

Pour les systèmes d'exploitation 32 bits: ici

Pour les OS 64 bits: ici

1
Ashutosh kumar

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

1
SofDev

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.

1
Daniel Bonetti