Domanda

Accidenti, questo è così strano, non so cosa dire. La versione breve è che ho un'applicazione simulatore che ho deporre le uova dalla mia applicazione quando l'utente mi chiede di fare. Di recente ha smesso di funzionare, anche se posso fare funzionare la multa simulatore dalla riga di comando o il menu di avvio. Questo potrebbe essere dovuto a trasferirsi a VS2010 o Windows 7 o qualcosa non ho notato rivedendo diff controllo del codice sorgente.

Ho un secondo simulatore, che cerco di deporre le uova nello stesso modo e funziona benissimo.

Per impostazione predefinita, sto usando QProcess involucro di Qt3 intorno CreateProcess per questo scopo, ma ottengo lo stesso comportamento con il sistema, la mia CreateProcess e ShellExecute.

ShellExecute di un cmd.exe "params / c di applicazione" non fornirmi qualche informazione in più però. Ho la finestra di dialogo

  

"Il programma non può iniziare perché MSVCR80.dll manca dal computer. Provare a reinstallare il programma per risolvere questo problema."

sconvenientemente, sia l'applicazione principale e il secondo uso simulatore MSVCR80.dll.

Al momento la copia MSVC * 80.dll da G: \ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 nella stessa directory come il mio eseguibile, il messaggio di errore cambia in

  

"Errore di runtime!
  Programma: g: \ percorso \ a \ app.exe
  R6034
  Un'applicazione ha fatto un tentativo di caricare la libreria di runtime C in modo non corretto.
  Si prega di contattare team di supporto dell'applicazione per ulteriori informazioni.

seguito da

  

L'applicazione è in grado di avviarsi correttamente (0xc0000142). Fare clic su OK per chiudere l'applicazione.

E, ancora una volta, l'applicazione viene eseguita correttamente dalla riga di comando con quegli DLL in atto.


Aggiornamento:

I sospettava forse era legata all'ambiente, in modo cambiato la mia meccanismo ShellExecute fare params cmd / c && set di app. Ho messo su un cmd.exe con quelle stesse params e la mia App è ora che si infrangono in modo simile. Aggiornerà quando ho capire perché:)

E 'strumento di runtime componente di MATLAB che sta modificando variabile PATH del mio processo di cattivo effetto. Si anteponendo il proprio dir pieno di dll e scatenando il caos.

È stato utile?

Soluzione

Uno strumento stupido usavo fatto un setenv il PATH, anteponendo una directory voleva per caricare dinamicamente alcune DLL, ma che incasinato la mia domanda più tardi. Ho finito per usare GetEnvironmentStrings come mostrato nell'ultimo esempio qui , cancellando il prima voce della PATH env var, e l'invio del nuovo ambiente (originale) per QProcess, che avvolge CreateProcessA.

Altri suggerimenti

È necessario installare il CRT

Questo possono di lavoro - se si rompe, si arriva a mantenere entrambi i pezzi: -)

Provare ad installare VC ++ Redistributable da qui - http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en .

Ricordate di backup del sistema, creare un punto di ripristino prima di installare ecc roba.

Un'altra idea, provare a reinstallare l'appliacation mancanza di sé. Si può venire con la propria copia del ridistribuibili VC ++, e la reinstallazione potrebbe aiutare. Esp. cercando di reinstallarla utilizzando la modalità compability di Windows 7 (forse tornare a Vista o compatibilità XP) potrebbe essere ancora più efficace.

Per ribadire - dovrete provare, e non ho alcuna idea reale se una delle idee di cui sopra ti farà bene, o anche essere sicuri di non fare del male. Detto questo, se fossi di fronte ad un problema simile, questi sono i passi mi piacerebbe provare. HTH!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top