5

J'ai téléchargé et compilé une application C++ open source, Frhed. Lorsque j'exécute la version que j'ai compilée, il faut MSVCR100 et quelques autres fichiers dll (partie de redistribuable Visual C++). Toutefois, lorsque j'exécute l'exécutable Frhed précompilé d'origine, il s'exécute sans qu'aucun paquet redistribuable C++ ne soit installé. Dois-je modifier les options de compilation pour dissocier le programme des bibliothèques redistribuables C++?Exécutable C++ - erreur MSVCR100.dll introuvable

Répondre

13

Le programme original est probablement lié statiquement, alors que vous essayez de lier dynamiquement votre exécutable, qui se traduit par un fichier plus petit, mais une dépendance des fonctions à l'intérieur MSVCR100.dll (v10 de Microsoft C Runtime Library), qui serait ont été inclus dans l'exécutable si vous étiez en liaison statique.

Pour lier des DLL statiquement, accédez aux propriétés de votre projet et modifiez le mode de construction de MD à MT. Dans Visual Studio 2010/2012, cette propriété de projet est C/C++ -> Génération de code -> Bibliothèque d'exécution.

7

La réponse courte est oui, la plus longue réponse est, bien, plus longue.

La bibliothèque msvcr100.dll est la version 10.0 (à savoir la version Visual Studio 2010) du DLL implementation of the C run-time qui vous avez probablement demandé en utilisant la compilation/MD option. Pour éviter d'utiliser la version liée dynamiquement de l'exécution, vous pouvez utiliser l'option/MT à la place et lier statiquement l'exécution. Vous pouvez également redistribute msvcr100.dll (and other files) avec votre programme.

Questions connexes