Sembra esserci un problema nella versione collegata in modo statico di VS2012. L'avvio di un'applicazione console su un vecchio sistema comporta un'eccezione, ogni volta che vengono utilizzati i flussi, anche se i nuovi sistemi non causano alcun problema. Per riprodurre questo errore è sufficienteEccezione in msvcrt linkato staticamente utilizzando Visual Studio 2012
- creare una nuova applicazione console in VS2012
- aggiungere la riga
std::ofstream f;
ostd::cout << "Hello World";
nella funzione principale (includa fstream o iostream come richiesto) - interruttore v110_xp set di strumenti (se richiesto per Windows XP)
- passare a librerie collegate staticamente (/ MT)
- avviare l'exe su un vecchio sistema C'è sempre un'eccezione n.
Rimuovere la linea con ofstream o cout risolve sempre il problema. Il passaggio alle librerie di runtime collegate dinamicamente (/ MD) risolve sempre il problema. In caso di ofstream, l'ottimizzazione della dimensione (/ O1) o l'ottimizzazione (/ Od) anziché l'ottimizzazione della velocità (/ O2) hanno risolto il problema.
Qualcuno ha un'idea o un suggerimento? Grazie in anticipo.
Hai provato a eseguire l'applicazione con un debugger su Windows XP per scoprire dove si sta verificando la violazione di accesso? Se non hai installato Visual Studio su Windows XP, puoi configurare [Remote Debugging] (http://msdn.microsoft.com/en-us/library/vstudio/y7f5zaaa.aspx). Visual Studio viene fornito con il codice sorgente per la sua implementazione CRT. Assicurati di aggiungere la directory alle * directory VC++ *. – IInspectable
@IInspectable: grazie per l'idea del debug remoto. Ci proverò, ma il debugging remoto con VS2012 e XP sembra non essere facile: [Posso usare il debugger remoto di Visual Studio 2010 su Windows XP per eseguire il debug di un'app .Net 4.0 da Visual Studio 2012?] (Http: // StackOverflow .com/questions/14444055/can-i-use-the-visual-studio-2010-remote-debugger-su-windows-xp-to-debug-a-net-4) – user2766445
@IInspectable: il debug remoto non funziona con Visual Studio 2012 e Windows XP. Il debugger remoto di Visual Studio 2012 richiede "una versione più recente di Windows". Ho provato a installare debugger remoto di Visual Studio 2010 e ho provato a connettermi da Visual Studio 2012, che non funzionava. – user2766445