Wygląda na to, że problem występuje w statycznie połączonej wersji VS2012. Uruchomienie aplikacji konsolowej na starym systemie prowadzi do wyjątku, ilekroć używane są strumienie, chociaż nowe systemy nie powodują żadnych problemów. Aby odtworzyć ten błąd, wystarczyWyjątek w statycznie połączonym pliku msvcrt przy użyciu programu Visual Studio 2012
- utworzyć nową aplikację konsoli w VS2012
- dodać linię
std::ofstream f;
lubstd::cout << "Hello World";
w głównej funkcji (m.in. fstream lub IOStream jako wymagane) - przełącznik v110_xp zestaw narzędzi (jeśli jest wymagany w przypadku Windows XP)
- przejście do statycznie połączonych bibliotek (/ MT)
- Uruchomienie exe na starym systemie Zawsze jest wyjątek n.
Usunięcie linii z kanału lub cout zawsze rozwiązuje problem. Przejście do dynamicznie połączonych bibliotek środowiska wykonawczego (/ MD) zawsze rozwiązuje problem. W przypadku przepływu, użycie optymalizacji rozmiaru (/ O1) lub brak optymalizacji (/ Od) zamiast optymalizacji prędkości (/ O2) rozwiązało problem.
Czy ktoś ma pomysł lub podpowiedź? Z góry dziękuję.
Czy próbowałeś uruchomić aplikację pod debuggerem w systemie Windows XP, aby dowiedzieć się, gdzie doszło do naruszenia zasad dostępu? Jeśli nie masz zainstalowanego Visual Studio w systemie Windows XP, możesz skonfigurować [Zdalne debugowanie] (http://msdn.microsoft.com/en-us/library/vstudio/y7f5zaaa.aspx). Visual Studio jest dostarczane z kodem źródłowym do implementacji CRT. Upewnij się, że dodasz katalog do * VC++ Directories *. – IInspectable
@IInspectable: Dzięki za pomysł zdalnego debugowania. Spróbuję, ale zdalne debugowanie za pomocą VS2012 i XP wydaje się niełatwe: [Czy mogę użyć zdalnego debugera Visual Studio 2010 w Windows XP do debugowania aplikacji .NET 4.0 z Visual Studio 2012?] (Http: // stackoverflow .pl/questions/14444055/can-i-use-the-visual-studio-2010-remote-debugger-on-windows-xp-to-debug-a-net-4) – user2766445
@IInspectable: Zdalne debugowanie nie działa z Visual Studio 2012 i Windows XP. Zdalny debuger Visual Studio 2012 wymaga "nowszej wersji systemu Windows". Próbowałem zainstalować zdalny debuger Visual Studio 2010 i próbowałem połączyć się z Visual Studio 2012 - które nie działało. – user2766445