2

Je compile le projet dans Visual Studio 10, l'exécutable compilé fonctionne bien sur win 7 mais il ne fonctionne pas sur win xp à cause de msvcrt100.dll manquant. J'ai essayé d'utiliser "/ NOTDEFAULTLIB" mais il supprime également d'autres bibliothèques externes que j'utilise. Est-il possible de ne pas lier avec la dernière bibliothèque d'exécution Microsoft?Comment ne pas lier contre msvcr100.dll?

Merci d'avance.

Répondre

6

Pour ne pas créer de lien avec la DLL, vous devez établir un lien statique avec le moteur d'exécution. Pour cela, allez dans Propriétés C/C++ -> Génération de code et sous Bibliothèque d'exécution sélectionnez Multi-threaded (/ MT) ou Multi-threaded Debug (/ MTd) dans la liste déroulante. Notez que, une fois que vous utilisez une bibliothèque d'exécution statique, tous les autres codes de bibliothèque avec lesquels vous liez doivent également être construits avec le même paramètre. Et vous devrez probablement ajouter des bibliothèques supplémentaires à l'éditeur de liens -> Entrée sous dépendances supplémentaires.

3

Cela ne fonctionne que sur Windows 7 par accident, quelqu'un a déjà installé cette DLL.

À court de créer un installateur (facile à faire avec un projet d'installation), un simple correctif copie msvcr100.dll avec vos propres binaires. Si vous avez seulement un EXE alors la solution simple est de lier la version statique du CRT. Basculez vers la version Release, cliquez avec le bouton droit sur le projet, Propriétés, C/C++, Génération de code, Paramètre de la bibliothèque d'exécution. Changez-le en/MT par défaut/MD.