Question

Mon Dieu, cela est si bizarre, je ne sais pas quoi dire. La version courte est que j'ai une application de simulateur que je Spawn de ma demande lorsque l'utilisateur me demande. Il a récemment cessé de fonctionner, bien que je peux courir l'amende simulateur de la ligne de commande ou dans le menu Démarrer. Cela pourrait être dû à passer à VS2010 ou Windows 7 ou quelque chose que je ne l'ai pas remarqué l'examen diffs de contrôle source.

J'ai un second simulateur que j'essaie de se reproduire de la même façon et il fonctionne très bien.

Par défaut, j'utilise l'enveloppe de QProcess Qt3 autour CreateProcess à cette fin, mais j'obtenir le même système en utilisant le comportement, mon CreateProcess et ShellExecute.

ShellExecute d'un cmd.exe "/ c l'application params" ne me fournir quelques informations supplémentaires cependant. Je reçois la boîte de dialogue

  

« Le programme ne peut pas démarrer car MSVCR80.dll est absent de votre ordinateur. Essayez de réinstaller le programme pour résoudre ce problème. »

Incommodément, à la fois la demande initiale et la seconde utilisation du simulateur MSVCR80.dll.

Lors de la copie MSVC * 80.dll de g: \ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 dans le même répertoire que mon exécutable, le message d'erreur passe à

  

"Runtime Error!
  Programme: g: \ chemin \ vers \ app.exe
  R6034
  Une demande a fait une tentative de charger la bibliothèque d'exécution C de manière incorrecte.
  S'il vous plaît contacter l'équipe de soutien de l'application pour plus d'informations.

Suivi par

  

L'application n'a pas pu démarrer correctement (0xc0000142). Cliquez sur OK pour fermer l'application.

Et, encore une fois, l'application fonctionne très bien à partir de la ligne de commande avec les dll en place.


Mise à jour:

Je soupçonne peut-être était lié environnement, donc changé mon mécanisme ShellExecute pour faire cmd / c && ensemble app params. Je mis en place un cmd.exe avec ces mêmes params et mon application est maintenant de s'écraser de façon similaire. Mettra à jour lorsque je savoir pourquoi:)

Il est un outil d'exécution de composant qui modifie MATLAB® la variable PATH de mon processus de mauvais effet. Il est préfixer son propre répertoire complet des dll et des ravages.

Était-ce utile?

La solution

Un outil stupide que j'utilisais a fait un setenv sur PATH, préfixer un répertoire qu'il voulait pour charger dynamiquement des dll, mais qui foiré ma demande plus tard. Je fini par utiliser GetEnvironmentStrings comme indiqué dans le dernier exemple , effaçant la première entrée de la var env PATH, et l'envoi du nouvel environnement (original) à QProcess, qui enveloppe CreateProcessA.

Autres conseils

Vous devez installer le CRT

peut travail - si elle se casse, vous obtenez de garder les deux pièces: -)

Essayez d'installer VC ++ redistribuable à partir d'ici - http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en .

Souvenez-vous de sauvegarder votre système, créer un point de restauration, etc. avant d'installer des choses.

Une autre -Essayer idée de réinstaller le appliacation ne lui-même. Il peut venir avec sa propre copie des redistribuables VC et réinstallant pourrait aider. Esp. en essayant de le réinstaller en utilisant le mode compability de Windows 7 (retour peut-être aller à Vista ou XP compatibilité) pourrait être encore plus efficace.

Pour rappeler - vous devez essayer, et j'ai aucune idée si l'une des idées ci-dessus vous faites du bien, ou même être sûr de ne pas nuire. Cela dit, si je face à un problème similaire, ce sont les étapes que je vais essayer. HTH!

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