28 votes

Exécutable Visual C++ et MSVCR100d.dll manquant

Je sais que cette question a été posée ailleurs et qu'on y a répondu, 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 une machine qui ne dispose pas de la bibliothèque d'exécution VC++ (c'est-à-dire msvcr100d.dll), j'obtiens l'erreur "le programme ne peut pas démarrer car msvcr100d.dll est manquant sur votre ordinateur".

C'est bizarre pour deux raisons :

  • Pourquoi essaie-t-il d'établir un lien avec la version de débogage du redistribuable ?
  • J'ai essayé d'appliquer cette solution J'ai aussi essayé d'utiliser la bibliothèque d'exécution /MT au lieu de /MD (DLL multi-threaded), mais cela n'a fait qu'aggraver le problème (si je copiais manuellement msvcr100d.dll, le programme disait qu'il ne pouvait pas trouver msvcp110.dll).

Comment puis-je empaqueter la bibliothèque d'exécution avec mon exécutable afin de pouvoir l'exécuter sur des machines qui n'ont pas MS VC 2010 ou le redistribuable installé ?

Je sais qu'il est considéré comme un risque de sécurité d'inclure une copie de la DLL puisqu'elle ne sera jamais mise à jour, mais mon objectif est simplement d'envoyer cet exécutable à quelques amis à court terme.

35voto

Cody Gray Points 102261

Vous ne devriez absolument pas avoir besoin de la version de débogage du CRT si vous compilez en mode "release". Vous pouvez savoir qu'il s'agit de la version de débogage des DLLs car elles se terminent par un signe d .

Plus précisément, la version de débogage est no redistribuable, il ne s'agit donc pas simplement de l'"empaqueter" avec votre exécutable, ou de compresser ces DLL.

Vérifiez que vous compilez bien todos de votre application en mode "release", et que vous liez la bonne version du CRT et de toute autre bibliothèque que vous utilisez (par exemple, MFC, ATL, etc.).

Vous sera bien sûr, il faut msvcr100.dll (notez l'absence de la d suffixe) et quelques autres s'ils ne sont pas déjà installés. Conseillez à vos amis de télécharger le Visual C++ 2010 Redistribuable (ou x64 ), ou l'inclure automatiquement dans votre application en créant un installateur.

2voto

tmighty Points 381

Pour moi, le problème est apparu dans cette situation:

J'ai installé VS2012 et n'a pas besoin de VS2010 plus. Je voulais obtenir mon ordinateur propre et aussi supprimé les VS2010 exécution de fichiers exécutables, de penser qu'aucun autre programme de l'utiliser. Ensuite, j'ai voulu tester ma DLL en l'attachant à un programme (appelons-le programme X). J'ai eu le même message d'erreur. J'ai pensé que j'ai fait quelque chose de mal lors de la compilation de la DLL. Cependant, le véritable problème est que j'ai attaché la DLL pour le programme X, et le programme X a été compilé dans VS2010 avec les informations de débogage. C'est pourquoi l'erreur a été levée. J'ai recompilé le programme X dans VS2012, et l'erreur a disparu.

1voto

Ashutosh kumar Points 1

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

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

Pour les systèmes d'exploitation 64 bits : Ici

1voto

Daniel Bonetti Points 478

J'ai eu la même erreur.

Je faisais référence à une DLL VS2010 dans un projet VS2012.

Je viens de recompiler la DLL sur VS2012 et maintenant tout va bien.

0voto

SofDev Points 8

Version de débogage de la bibliothèque vc++ Les dlls ne sont PAS destinés à être redistribués !

Les versions de débogage d'une application ne sont pas redistribuables, et les débogages des DLL de la bibliothèque Visual C++ ne sont pas redistribuables. Vous pouvez pouvez déployer les versions de débogage des applications et des DLL Visual C++ uniquement sur vos autres ordinateurs, dans le seul but de déboguer et de tester les applications les applications sur un ordinateur sur lequel Visual Studio n'est pas installé. n'est pas installé. Pour plus d'informations, voir Redistribution des fichiers Visual C++.

Je vais également fournir le lien : http://msdn.microsoft.com/en-us/library/aa985618.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X