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: