Frage

Meine Güte, das so komisch ist, ich weiß nicht, was ich sagen soll. Die kurze Version ist, dass ich einen Simulator App, die ich aus meiner Anwendung laichen, wenn der Benutzer mich fragt. Er hielt vor kurzem arbeiten, obwohl ich den Simulator fein von der Kommandozeile oder Startmenü ausführen kann. Dies bedingt sein könnte VS2010 oder Windows 7 oder etwas zu bewegen habe ich nicht bemerkt Quellensteuer diffs zu überprüfen.

Ich habe einen zweiten Simulator, die ich zu laichen in der gleichen Art und Weise versuchen, und es funktioniert gut.

In der Standardeinstellung Ich verwende QProcess Wrapper des Qt3 um Create für diesen Zweck, aber ich das gleiche Verhalten mit System, mein eigenes Create bekommen, und ShellExecute.

ShellExecute einer cmd.exe „/ c Anwendung params“ tut mir bieten mit etwas mehr Informationen jedoch. Ich erhalte den Dialog

  

„Das Programm kann nicht gestartet werden, da MSVCR80.dll von Ihrem Computer fehlt. Versuchen Sie das Programm neu zu installieren, dieses Problem zu beheben.“

Ungünstig, sowohl die Stammanmeldung und die zweite Simulator Verwendung MSVCR80.dll.

Beim Kopieren MSVC * 80.dll von g: \ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 in das gleiche Verzeichnis wie meine ausführbare Datei, die Fehlermeldung ändert sich auf

  

"Runtime Error!
  Programm: g: \ path \ to \ app.exe
  R6034
  Eine Anwendung hat versucht, die C-Laufzeitbibliothek falsch zu laden.
  Bitte kontaktieren Sie den Support der Anwendung für weitere Informationen.

Gefolgt von

  

Die Anwendung konnte nicht korrekt gestartet (0xc0000142). Klicken Sie auf OK, um die Anwendung zu schließen.

Und wieder einmal die Anwendung läuft gut von der Kommandozeile mit dem DLLs an seinem Platz.


Update:

Ich vermute, vielleicht war es Umwelt, so meinen ShellExecute Mechanismus geändert cmd / c Satz && App params zu tun. Ich habe eine cmd.exe mit dem gleichen params und meine App jetzt abstürzt ähnlich. Wird aktualisiert, wenn ich herausfinden, warum:)

Es ist Komponente Runtime Tool MATLAB, dass mein Prozess der PATH-Variable auf schlechte Wirkung zu modifizieren. Es ist seine eigen dir voll von DLL und wütet vorangestellt wird.

War es hilfreich?

Lösung

Ein törichtes Werkzeug, das ich wurde mit tat einen setenv auf PATH, das Voranstellen ein Verzeichnisses es zum dynamischen Laden einig DLLs wollte, aber die später meine Anwendung vermasselte. Ich landete GetEnvironmentStrings mit wie im letzten Beispiel gezeigt hier , das Löschen erster Eintrag in der PATH env var, und Senden die neue (original) Umgebung QProcess, die CreateProcessA einwickelt.

Andere Tipps

Sie müssen die CRT

Das können Arbeit - wenn es bricht, Sie erhalten beide Stücke zu halten: -)

Versuchen Sie, VC ++ verteilbare von hier - http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en .

Denken Sie daran, ein Backup Ihres Systems, erstellen Sie einen Wiederherstellungspunkt usw., bevor Sachen zu installieren.

Eine weitere Idee -try Neuinstallation die fehlerhafte Appliacation selbst. Es kann ++ redistributables mit seiner eigenen Kopie von VC kommen, und könnte helfen, neu zu installieren. Esp. versucht Windows 7 compability Modus neu zu installieren es mit (vielleicht zu Vista oder XP-Kompatibilität zurück) könnte noch effektiver sein.

Um es wiederholen - Sie werden versuchen müssen, und ich habe keine Ahnung, wenn eine der oben genannten Ideen werden Sie gut tun, oder sogar sicher keinen Schaden zu tun. Das heißt, wenn ich mit einem ähnlichen Problem konfrontiert waren, das sind die Schritte, die ich versuchen würde. HTH!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top