Côte à la folie de côté - binaires en cours d'exécution sur le même ordinateur

StackOverflow https://stackoverflow.com/questions/4578423

  •  14-10-2019
  •  | 
  •  

Question

Voici ma configuration:

  • Ordinateur A - Windows 7, MS Visual Studio 2005 patchés pour la compatibilité Win7 (8.0.50727.867)
  • Ordinateur B - Windows XP SP2, MS Visual Studio 2005 installé (8.0.50727.42)

Mon projet a des dépendances externes (DLL préconstruits - soit Miser sur ou téléchargés sur Internet), quelques DLLs construites à partir de sources et un exécutable. Je développe principalement sur et tout est bien là. À un certain moment, j'essaie de construire mon projet sur l'ordinateur B , copier les DLL préconfigurés dans le dossier de sortie. Tout se construit bien, mais en essayant de commencer ma demande que je reçois

  

L'application n'a pas réussi à initialiser correctement (0xc0150002) ....

Le journal des événements contient deux personnes:

  

n'a pas pu être trouvé à charge Microsoft.VC80.CRT Assemblée et dernière erreur était l'assembly référencé est pas installé sur votre système.

ainsi que le peu plus amusant

  

Generate Contexte L'activation a échoué pour   some.dll. Référence message d'erreur: Le   opération terminée avec succès.

A ce point, je fais de mon Google-Fu, mais en vain - tous les coups sont pratiquement sur les binaires fonctionnant sur des machines sans Visual Studio installé. Dans mon cas, cependant, les executables ne parviennent pas à exécuter sur l'ordinateur, ils sont construits.

L'étape suivante a été d'essayer Dependency Walker et il m'a déconcerté encore plus - mes DLL construites à partir de sources sur la même boîte ne peut pas trouver MSVCR80.DLL et MSVCP80.DLL, mais l'exécutable semble être bien en ce qui concerne ces deux DLLs-à-dire quand j'ouvre la exécutable avec marcheur de dépendance, il montre que les MSVC?80.DLLs peuvent être trouvés, mais quand je ouvert un de mes DLLs il dit qu'ils ne peuvent pas. Voilà où je suis tout à fait d'idées quoi faire alors je vous demande, mon cher stackoverflow:)

J'avoue que je suis un peu floue de toute chose sur la côte à côte, donc la lecture générale sur le sujet sera également apprécié.

Était-ce utile?

La solution

Votre question a la réponse à votre problème. A l'ordinateur a VC exécution de la version 8.0.50727.867 , et l'ordinateur B a seule version 8.0.50727.42

Vous avez construit vos bibliothèques sur l'ordinateur A, et ils dépendent de la version 867 de l'exécution VC. (Cela peut être trouvé dans le manifeste intégré dans les bibliothèques.) Lorsque les copier sur l'ordinateur B, ces bibliothèques nécessitent encore la version 867 du moteur d'exécution, mais vous avez seulement la version 42.

Pour résoudre les dépendances d'assemblage d'exécution VC, vous devez installer redistribuables d'exécution VC de la version 867 sur l'ordinateur B. Cependant, je vous conseille de mettre à jour Visual Studio sur l'ordinateur B afin que vous ayez la même version sur les deux ordinateurs. Et mieux encore, installez Visual Studio 2005 SP1 sur les deux ordinateurs puis installez cette mise à jour de sécurité SP1 . Après avoir installé ce dernier, vos bibliothèques dépendent de la version 8.0.50727.4053 .

Autres conseils

il est possible que le problème est lié avec les différentes versions d'exécution CRT installé sur les deux machines. est-il possible de construire tous vos modules à utiliser runtime CRT lié statiquement pour vérifier?

D'abord, je vérifie que dll préconstruits en préparant projet factice pour les charger

J'ai eu récemment le même type d'erreur lors de la construction des projets sur une machine, puis les déplacer vers une autre machine. Le plus grand coupable ici est probablement une configuration de débogage pour l'un des composants binaires. C'est, MSVC a l'exigence assez rigide de toutes les DLL / EXE en cours de construction avec la même bibliothèque d'exécution, le débogage ou la libération, sinon ils ne fonctionneront pas ensemble.

Quand j'ai eu cela se ils ont aussi tendance à compiler très bien, mais quand vous essayez de les exécuter vous obtenez ce message d'erreur extrêmement cryptique.

Vous devez vous assurer que chaque module utilise construire ensemble la même configuration, ainsi debug ou la libération par la chaîne de construction. Cette erreur vient également probablement avec discordances dans d'autres bibliothèques, alors assurez-vous que votre MSVC est exactement la même version sur les machines où vous construisez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top