Makale numarası: 126717 - Son Gözden Geçirme: 05 Temmuz 2005 Salı - Gözden geçirme: 1.1

SORUN: C1853 hata C karıştırma ve C++ tarafından üretilen dosyası

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Hem C, hem de C++ dosyalarını içeren ve önceden derlenmiş üstbilgileri kullanan Visual C++ projeleri oluştururken, aşağıdaki hata iletisini alabilirsiniz:
önemli hata C1853: '<filename>' önceden derlenmiş bir üstbilgi dosyası değil.
Bu Derleyici ile oluşturulmuş.

Neden

Derleyici önceden derlenmiş bir C++ Derleyici üzerinde C kaynak dosyası tarafından oluşturulan üstbilgi kullanmaya çalışır. "Dosya başına kullan, Precompiled üstbilgileri" proje C hem de C++ kaynak kodu ile kullanıldığında, bu durum oluşabilir.

Önceden derlenmiş bir üstbilgi, C derleyicisinden Derlenecek bir kaynak dosya ile oluşturulan bir C++ Derleyici kullanmak için geçerli değil. Ayrıca, geçerli bir C Derleyici kullanmak için önceden derlenmiş bir üstbilgi C++ Derleyici tarafından Derlenecek olan bir kaynak dosyası oluşturulur.

Visual C++ sürüm 2.x hata iletisini Yardım C1853 için yanıltıcı olabilir. Bu sorun yalnızca ile 16-bit ve 32-bit derleyiciler oluşturulan .PCH dosyalarını karıştırma oluşur, anlamına gelir. Genellikle, ancak C kaynak dosyası "Dosya başına kullanımı Precompiled üstbilgileri." kullanan saf C++ projeye ekledikten sonra bir proje oluştururken oluşabilir (Visual C++ sürüm 4.0 çevrimiçi Yardım doğru bu bilgileri C1853 "C kodu önceden derlenmiş bir C++ dosyasını kullanarak kaynaklanabilir.", önemli bir hata belirten tarafından içerir)

Çözüm

Bu sorun, durumuna bağlı olarak çeşitli biçimlerde çözülebilir:

Çözümleme MIYIM

Tek ve C kaynak dosyası ve birden çok C++ kaynak dosyalarını (veya tersi) ile projeler için tek bir kaynak dosyası önceden derlenmiş üstbilgileri devre dışı bırakmak için aşağıdaki adımları kullanın:

  1. Geçerli bir hedef için <a0>Project ayarları</a0> iletişim kutusunu açmak ve C/C++ sekmesi altındaki Precompiled üstbilgi bölümü seçin.
  2. Soldaki bölmede <a1>Proje</a1> ağacından C dosyayı seçin.
  3. Visual C++ sürüm 2.x for üstbilgisinde başına dosya kullan, Precompiled .PCH dosyası kullan onay kutusunu devre dışı bırakın. Visual C++ için sürüm 4.0, 5.0 ve 6.0, Not using seçin, seçenek düğmesi üstbilgi precompiled.
  4. Yeni ayarları kaydetmek ve projeyi derleyin.

<a1>Çözünürlüğü</a1> ıı

Birden çok C ve C++ kaynak dosyalarını içeren projeler için önceden derlenmiş bir kaynak dosyaları yordamın üstbilgileri devre dışı bırakmak için aşağıdaki adımları kullanın:

Sürüm 2.x ile Visual C++:

  1. Proje menüsünde maddeden yeni grup seçerek, geçerli hedef için yeni bir grup oluşturun.
  2. C kaynak dosyalarını yeni bir gruba taşır.
  3. Proje ayarlarını açın ve C/C++ sekmesini iletişim Precompiled üstbilgi bölümünde'ı seçin.
  4. Soldaki bölmede <a1>Proje</a1> ağacından yeni bir grup seçin.
  5. Başına dosya kullan, Precompiled içinde .PCH dosyası kullan onay kutusunu devre dışı üstbilgileri.
  6. Yeni ayarları kaydetmek ve projeyi derleyin.
Bu, bir dizi kaynak dosyası önceden derlenmiş üstbilgileri devre dışı bırakır. Ancak, dosyanın önceki ayarlarına bağlı olarak devre dışı PCH kullanım kaynak dosyaları bu gruba sonraki eklemeleri gerekir.

Ile Visual C++ sürüm 4.0 grupları artık desteklenmiyor. Kaynak dosyaları bir grup önceden derlenmiş bir üstbilgi kullanımını devre dışı bırakmak için <a0></a0>, izleyin adımlar çözüm TıKLATTıĞıMDA, ancak adım 2'de, her dosya seçerken CRTL tuşunu basılı tutarak.

<a1>Çözünürlüğü</a1> ııı

Önceden derlenmiş üstbilgileri gerektiren projelerde, soldaki bölmede <a1>Proje</a1> ağacından tüm hedefleri çözümlemesi TıKLATTıĞıMDA, ancak adım 2 seçin adımları izleyin.

<a1>Çözünürlüğü</a1> IV (VC 4.x ve 5.0)

  1. Bir alt proje türü "Statik kitaplığı" oluşturun.
  2. .C dosyaları bu alt proje yerleştirin.
  3. .C dosyaları, üst düzey bir projeden silin.
  4. En üst düzey proje için bağlantı çizgisini ortaya çıkan bir kitaplık veya .obj dosyaları ekleyin.
Bu, pre-compiled üstbilgi (.CPP dosyaları) üst düzey Proje ve alt proje (.C dosyaları) için farklı bir pre-compiled başlığı belirtmenize izin verir.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Visual C++ sürüm 2.0, hedef projedeki başına yalnızca bir önceden derlenmiş bir üstbilgi dosyası sağlar. Bu dosya, PROJNAME.PCH PROJNAME olduğu projenin adı varsayılan olarak adlandırılır. Bu, hedef ayarlarının (örneğin, "/fp MYNAME.PCH") <a0>/fp seçeneğini kullanarak Project seçenekleri düzenleme denetimine değiştirilebilir.

Bu önceden derlenmiş bir başlık (.PCH) dosyası, C/C++ sekmesini iletişim proje ayarlarını önceden derlenmiş bir üstbilgi bölümünde gösterilen dosya başına kullanın veya Otomatik Sistem kullanılarak oluşturulabilir.

Geçerli .PCH dosyası geçersiz veya üstbilgi dosyası güncelleştirildiğinde, otomatik PCH seçeneği (seçenek /YX) .PCH bir dosya oluşturur. Başka bir derleyici (C veya C++) veya farklı bir üstbilgi dosyaları kümesini veri kaynağında bulunan kümesinden içeren tarafından oluşturulan geçersiz .PCH dosyaları içerir. Bu seçenek, bu seçeneği kullanan kaynak dosyalarının tümünü üstbilgi dosyaları aynı bir kümesini içerir ve bir tür (C veya C++) veya yalnızca tek bir proje dosyasında genellikle yerleşik, derleme zamanı en iyi şekilde kaydeder.

Bu seçenek verimliliğini derleme siparişinde bağlıdır. C ve C++ kaynak dosyalarını derleme sırayla her zaman araya ekleme, yeni .PCH dosyası oluşturur. En son sürüme bir C++ .PCH dosyasında sonuçlandı, C dosya güncelleştirdikten sonra bir proje oluşturma, .PCH dosyası oluşturur.

Bir kaynak dosyası etkin onay kutusunu '.PCH dosyası oluştur' (/Yc seçeneği) ile derlenen her başına dosya kullan PCH seçeneği .PCH bir dosya oluşturur. Oluşturulan .PCH dosyası '.PCH dosyası kullan' (/Yu seçeneği) onay kutusunu etkin olan tüm kaynak dosyaları ile kullanılır. Oluşturulan bir geçersizse, derleyici yeni .PCH dosyası yeniden değildir; bunun yerine, aşağıdaki iletilerden birini verir:
  • PCH C++ Derleyici tarafından oluşturulduysa:
    önemli hata C1853: '<filename>' Bu bir derleyici ile oluşturulan önceden derlenmiş bir üstbilgi dosyası değil.
  • PCH farklı içeren kaynak kodu tarafından oluşturulduysa içerir:
    önemli hata C1852: '<filename>' geçerli bir önceden derlenmiş üstbilgi dosyası değil.
Not: ıt bir .PCH oluşturmak için birden fazla kaynak dosyası, ancak Microsoft, önermez'nı belirlemek olanaklıdır. Ayrıca, iki karıştırma yukarıda özetlenen hatalara neden olabilir, çünkü iki PCH sistem karıştırırsanız Microsoft önerilir yapar.

Visual C++ (1.51 1.50 ve 1.1)'ün önceki sürümlerinde ayrı bir üstbilgi dosyası, c ve C++ kaynak dosyalarını precompiled izin. Visual C++ sürüm 2.0 için yalnızca bir PCH sınırlı olduğundan, C için farklı önceden derlenmiş üstbilgi dosyaları ve C++ dosyaları kullanmak olanaklı değildir. Bir proje üzerinde bağlantı noktası oluşturma proje oluşturmaya çalışırken aşağıdaki iletide neden olur:
Kaynak dosyaları "file1.c" ve "file2.cpp" her ikisi de yapılandırılmış olan
"proj.pch" çıkış dosyası üretir. Proje yerleşik edemiyor.

Referanslar

Önceden derlenmiş başlıkları hakkında daha fazla bilgi için lütfen Books Online'da "önceden derlenmiş üstbilgileri" arayın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Anahtar Kelimeler: 
kbmt kbcompiler kbcpponly kberrmsg kbprb KB126717 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:126717  (http://support.microsoft.com/kb/126717/en-us/ )