2010-04-21 15 views
1

Mon application est compilée sur un PC de développement avec un 762 manifeste: Est-il possible qu'une application C++ utilise CRT 4053 lorsque le manifeste utilise 762?

Cependant lors de l'exécution, sur une autre version PC, l'application utilise la version 4053 du fichier. c: \ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989 \ Msvcr80.dll

Quelque part le long de l'exécution de ma demande, je reçois une erreur d'exécution pointant vers le msvcr80.dll. Je suspecte que le problème pourrait être provoqué parce que l'application utilise une DLL à l'exécution qui n'a pas été utilisée pendant la construction.

Si je consulte le dossier WinSxS du PC de version, j'ai les versions 762 et 4053 du CRT. Pourquoi l'application utilise-t-elle 4053 au lieu de celle utilisée dans le manifeste?

Merci. En raison d'une "politique d'éditeur" qui redirige les versions de DLL demandées.

Répondre

1

Votre manifeste ne devrait plus demander 762, il a des cooties. Vous devrez déployer le security update sur votre ordinateur pour que vc \ include \ crtassem.h soit mis à jour.

+0

Il est possible d'installer un fichier de configuration d'application avec le même élément bindingRedirect utilisé dans le fichier de règles. Les fichiers de configuration d'application ont la priorité sur les fichiers de stratégie d'éditeur. Par conséquent, si la stratégie de l'éditeur pose problème, vous pouvez résoudre les problèmes au cas par cas. En fin de compte, installez le correctif sur les ordinateurs personnels et résolvez le problème à la source. –