Derlemede eksik .pch dosyası nasıl düzeltilir?


164

Ne zaman Visual Studio benim c ++ çözüm oluşturmak xxxxx.pch dosya eksik şikayet ediyor. Önceden derlenmiş başlıkları geri almak için kaçırdığım bir ayar var mı?

tamlık için kesin hata:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory

1
daha fazla bilgi vermelisiniz. tam olarak hangi hatayı alıyorsunuz? projeniz şu anda nasıl yapılandırıldı?
Assaf Lavie

Sadece basit bir yeniden tüm sorunumu düzeltti.
Deqing

Yanıtlar:


436

NOT: IDE'nin sonraki sürümleri, ilgili dosyalar için varsayılan adlarda "stdafx" yerine "pch" kullanabilir. Aşağıdaki talimatlarda stdafx yerine pch kullanılması gerekebilir. Özür dilerim. Benim hatam değil.

  1. Çözüm Gezgini'nde projenizi sağ tıklatın.
  2. Açılır menünün altındaki Özellikler'i tıklayın.
  3. Özellikler Sayfalarının sol üst tarafında, açılır menüden Tüm Konfigürasyonlar'ı seçin.
  4. C / C ++ ağacını açın ve Önceden Derlenmiş Üstbilgiler'i seçin
  5. Önceden Derlenmiş Başlık: Kullan'ı seçin (/ Yu)
  6. Önceden Derlenmiş Başlık Dosyası alanını doldurun. Standart stdafx.h
  7. Tamam'ı tıklayın

  8. Başlık Dosyalarınızda stdafx.h yoksa oraya koyun. Önceden derlenmesini istediğiniz tüm başlıkları içerecek şekilde düzenleyin.

  9. Projenize stdafx.cpp adlı bir dosya koyun. Üstüne #include "stdafx.h" yazın ve başka bir şey yapmayın.
  10. Solution Explorer'da stdafx.cpp dosyasına sağ tıklayın. 4. adımdaki gibi tekrar Özellikler ve Tüm yapılandırmalar'ı seçin ...
  11. ... ancak bu sefer Önceden Derlenmiş Başlık Oluşturma (/ Yc) öğesini seçin . Bu yalnızca bir dosyaya stdafx.cpp dosyasına bağlanır.
  12. #İnclude "stdafx.h" dosyasını tüm kaynak dosyalarınızın en üstüne yerleştirin.

Lucky 13. Parmaklarınızı çaprazlayın ve Build tuşuna basın.


58
Ben stdafx.cpp farklı bir ayar olması gerektiğini bilmiyordum. Mükemmel cevap.
uzman

5
Diğeri 10. ve 11. adımları kaçırdığı için bu kabul edilen cevap olmalıdır. Teşekkürler!
JBentley

2
Bu benimkinden daha temel bir cevap. PCH'nin çalışması için 1-7 adımı gereklidir, ancak sorudaki hata mesajı bu adımların zaten yapıldığını gösterir. OTOH, tek bir stdafx.pchdosya varsayarken xxxxx.pch, sorudan daha karmaşık bir soruna işaret eder (çoklu PCH kurulumu).
MSalters

1
Bu cevap gerçekten günü kurtardı. Teşekkürler.
Matt Craig

Teşekkürler bayım! Yeni bir proje için C / C ++ r köklerime geri dönüyorum ve biraz spaz gibi hissediyorum
Colby Afrika

59

Önceden Derlenmiş Başlık (pch) kullanımı iki adımlı bir işlemdir.

Birinci adımda, saplama dosyasını derlersiniz (VS200x'te buna genellikle denir stdafx.cpp. Daha yeni sürümler kullanılır pch.cpp.). Bu saplama dosyası dolaylı olarak yalnızca önceden derlemek istediğiniz başlıkları içerir. Genellikle, küçük bir başlık (genellikle stdafx.hveya pch.hpp) <iostream>ve gibi standart başlıkları listeler <string>ve bu daha sonra saplama dosyasına eklenir. Bunu derlemek .pch dosyasını oluşturur.

2. adımda, gerçek kaynak kodunuz 1. adımdaki ilk üstbilgiyle aynı küçük üstbilgiyi içerir. Derleyici, bu özel üstbilgiyle karşılaştığında, karşılık gelen .pch dosyasını okur. Bu, her seferinde bu standart başlıkları derlemek zorunda kalmayacağı anlamına gelir.

Sizin durumunuzda, 1. adımın başarısız olduğu anlaşılıyor. Saplama dosyası hala mevcut mu? Sizin durumunuzda, bu muhtemelen olurdu xxxxx.cpp. Bu, derlenmiş bir dosya olmalıdır /Yc:xxxxx.pch, çünkü bu PCH işleminin 1. adımını gösteren derleyici bayrağıdır. Varsa xxxxx.cppve böyle bir saplama dosyasıysa, muhtemelen /Yc:derleyici seçeneğini eksiktir .


13
muhtemelen / Yc: derleyici seçeneğini kaçırıyor olabilir. Bu arada, seçenek Proje Özellik Sayfaları / Yapılandırma Özellikleri / C-C ++ / Önceden Derlenmiş Üstbilgiler'de bulunur
Mart'ta 5

22

Düzeltme:

  1. Projenizde xxxxx.cpp olduğundan emin olun

  2. Xxxxx.cpp dosyasını / Yc bayrağıyla derleyin ( Önceden Derlenmiş Üstbilgi Oluştur )
    (xxxxx.cpp'ye sağ tıklayın -> özellikler -> Önceden Derlenmiş Üstbilgiler -> oluştur )

  3. Diğer tüm dosyaları / Yu bayrağıyla derleyin ( Önceden Derlenmiş Üstbilgiyi Kullan )
    (projeye sağ tıklayın -> özellikler -> Önceden Derlenmiş Üstbilgiler -> kullan )


Bu beni düzeltti. Çok teşekkür ederim!
CharlesW

7
  1. Projeye sağ tıklayın ve özellik menü öğesini seçin
  2. goto C / C ++ -> Önceden Derlenmiş Başlıklar
  3. Önceden Derlenmiş Üstbilgileri Kullanmama'yı seçin

Bu benim için çalıştı. Ben "stdafx.cpp" silmişti, sonra geri eklediğimde, ben önceden derlenmiş üstbilgileri kapatın kadar bu hata gider olmaz. Proje zaten küçük, bu yüzden hızda çok fark yaratıyor gibi değil.
Contango

3
4.Create (/Yc) (geri yüklemek ve sonra tekrar kullanmak için) seçeneğini seçin
Bitterblue

2

Evet / başkalarının işaret ettiği gibi / Yc seçenekleriyle ortadan kaldırılabilir, ancak büyük olasılıkla düzeltmek için dokunmanıza gerek yoktur. Bu hatayı neden herhangi bir ayar değiştirmeden ilk etapta alıyorsunuz? Projeyi 'temizlemiş' ve daha sonra tek bir cpp dosyası derlemeye çalışmış olabilirsiniz. Bu durumda, precompiler üstbilgisi artık eksik olduğu için bu hatayı alırsınız. Sadece tüm projeyi (başarısız olsa bile) ve herhangi bir tek cpp dosyası oluşturduktan sonra bu hatayı almayacaksınız.


2

Bunun bir sunucu derlemesinde (AppCenter) ve CocoaPod'ları kullanarak sizde olması durumunda, Podfile'ınızın teslim edildiğinden emin olun.

AppCenter "pod install" komutunu yalnızca bir Pofile bulursa ve dosyalar üzerinde PODS klasörünü BULMAZSA çalıştırır.

Klasör teslim vardı, ama git otomatik olarak .pch dosyalarını yok sayar çünkü (bunu doğrulamak için .gitignore kontrol edin), benim .pch weren'nt kontrol ediliyor.

Sorunumu .pch dosyalarını kontrol etmeye zorlayarak sıraladım, ancak Appcenter bu durumda pod install komutunu çalıştıracağından PODS klasörünü silmek de çalışmalıdır.

Umarım bu birine yardımcı olur.


0

Her şey doğruysa, ancak bu hata varsa, **** .vcxproj dosyasındaki bir sonraki bölümü kontrol etmeniz gerekir:

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

Benim durumumda yanlış bir konfigürasyon adı vardı: sadece ilk kelime.


0

Bu konunun çok eski olduğunu biliyorum, ancak son zamanlarda VS2015'te bununla uğraşıyordum ve yardımcı olan yapı klasörlerini silmek ve yeniden oluşturmaktı. Bu, programı kapatmaya çalışmaktan veya inşaat sırasında VS'yi durduran / dondurduran bir program nedeniyle olabilir.


Evet, ancak orijinal soru VS2015 ile değil, VS2008 ile ilgiliydi. Bunun OP'nin problemini çözeceğine dair bir kesinliğiniz var mı?
T-Heron

Hangi VS sürümü olduğuna bakılmaksızın, sorun hala farklı yapılarda ortaya çıkar. Bunu deneyin ve uğraştığınız herhangi bir şey için işe yarayıp yaramadığını görün.
glover12

0

Aynı problemi olan iOS PCH dosyasını arıyordum, eğer benim gibi buraya geldiysen, bulduğum çözüm türetilmiş verileri temizleyerek; Simülatör (ler) i kapatın, xCode tercihlerine gidin -> konumlar -> türetilmiş veri dosyası yoluna gidin, xCode'u kapatın, türetilmiş veri klasöründeki dosyaları silin, yeniden başlatın ve alkışlayın :)


-1

Oluştur> Çözümü Temizle'yi, ardından Oluştur> Oluşturma Çözümü'nü deneyin. Bu benim için çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.