Komunikat o błędzie podczas korzystania z kompilatora Visual C++ 2008: "błąd krytyczny C1859"

Objawy

Po uruchomieniu kompilatora programu Microsoft Visual C++ 2008 w celu skompilowania plików lub utworzenia projektu pojawia się następujący komunikat o błędzie:

Uwaga

błąd krytyczny C1859: nazwa pliku nagłówka nieoczekiwany prekompilowany nagłówek, po prostu ponowne uruchomienie kompilatora może rozwiązać ten problem.

Ponadto ten problem nadal występuje nawet po ponownym uruchomieniu kompilatora. Ten problem występuje po włączeniu opcji Utwórz/Użyj kompilatora prekompilowanego nagłówka na komputerze z systemem Windows 7 lub Windows Server 2008.

Uwaga: Ten problem może występować częściej, jeśli włączysz opcję kompilatora /analyze.

Przyczyna

Po włączeniu opcji Utwórz/Użyj kompilatora prekompilowanego nagłówka kompilator wymaga, aby prekompilowane pliki nagłówkowe i względne moduły nie przenosiły się między kompilacjami. Jednak funkcja Address Space Layout Randomization (znana również jako ASLR) losowo przenosi moduły w procesie. W związku z tym błąd występuje, gdy moduły są przenoszone między kompilacjami.

Rozwiązanie

Informacje o poprawkach

Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może zostać poddana dodatkowym testom. Dlatego jeśli ten problem nie dotyczy użytkownika, zaleca się zaczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.

Aby pobrać tę poprawkę z galerii kodu MSDN (Microsoft Developer Network), odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://code.msdn.microsoft.com/KB976656
Uwaga: w galerii kodów MSDN są wyświetlane języki, dla których dostępna jest poprawka. Jeśli nie widzisz swojego języka na liście, oznacza to, że strona zasobu Galerii kodu nie jest dostępna dla tego języka.

Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=support Uwaga: tę poprawkę można również pobrać z następującej witryny firmy Microsoft w sieci Web:

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=25785 Uwaga Ten pakiet poprawki zawiera również poprawkę dla programu "C1001: Wystąpił błąd wewnętrzny w kompilatorze (plik kompilatora f:\dd\vctools\compiler\utc\src\p2\main.c, wiersz 182) podczas korzystania z programu .NET Framework 3.5.

Wymagania wstępne

Aby można było zastosować tę poprawkę, należy zainstalować dodatek Service Pack 1 dla programu Microsoft Visual Studio 2008.

Wymóg ponownego uruchomienia

Po zastosowaniu poprawki nie trzeba ponownie uruchamiać komputera, jeśli nie jest używane żadne wystąpienie programu Visual Studio.

Informacje o zastępowaniu poprawek

Ta poprawka nie zastępuje żadnych innych poprawek.

Informacje o plikach

  Angielska wersja tej poprawki ma atrybuty pliku (lub nowsze atrybuty pliku) wymienione w poniższej tabeli. Daty i godziny dla tych plików są wyświetlane według uniwersalnego czasu koordynowanego (UTC). Informacje o pliku są konwertowane na czas lokalny. Aby znaleźć różnicę między czasem UTC a czasem lokalnym, użyj przycisku
Strefa czasowa
  w zakładce
Data i godzina
  w oknie Panel sterowania.

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina
C1.dll 15.0.30729.4455 677,184 10-Gru-2009 02:31
C1.dll 15.0.30729.4455 828,744 10-Gru-2009 02:31
C1xx.dll 15.0.30729.4455 2,202,952 10-Gru-2009 02:31
C1xx.dll 15.0.30729.4455 2,213,704 10-Gru-2009 02:31
C1xx.dll 15.0.30729.4455 2,348,360 10-Gru-2009 02:31
C1xx.dll 15.0.30729.4455 2,504,016 10-Gru-2009 02:31
C1xx.dll 15.0.30729.4455 2,890,568 10-Gru-2009 02:31

Obejście

Aby obejść ten problem, użyj jednej z następujących metod.

Metoda 1

Wyłącz opcję kompilatora /analyze, jeśli jest włączona.

Metoda 2

 Rozpocznij czystą kompilację.

Metoda 3

Uruchom ponownie komputer.

Metoda 4

Wyłącz opcję kompilatora Utwórz/Użyj prekompilowanego nagłówka .

Uwaga: Nie ma gwarancji, że te metody będą skuteczne. Nawet jeśli używasz jednej z tych metod, nadal możesz napotkać ten problem.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Więcej informacji

Aby uzyskać więcej informacji na temat randomizacji układu przestrzeni adresowej, odwiedź następujący wpis w blogu firmy Microsoft:

Randomizacja układu przestrzeni adresowej w systemie Windows Vista Aby uzyskać więcej informacji o błędach prekompilowanego nagłówka, odwiedź następujący wpis w blogu firmy Microsoft:

Błędy prekompilowanego nagłówka w systemie Windows 7