Hata: CK1020 veya CK4009 tür bilgi 64 K aşıyor When karşılaşıldı.

Makale çevirileri Makale çevirileri
Makale numarası: 112335 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Bir tür dizin bilgileri için birden fazla 64 K'i içeren bir uygulama hata ayıklama sürümünü oluşturma CVPACK hangi sürümünün kullanıldığını bağlı olarak aşağıdaki hata iletilerinden birini veya birkaçını neden olabilir:
CK1020 CVPACK: önemli hata: paket türü dizin 65535 modülünde aşıyor <filename.obj>
CK4009 CVPACK: Uyarı: 64 K türleri aştı sonraki türleri atma.
IÇ HATA (özel durum kodu - cvpack.exe 0xc0000005.

Neden

Bu bölümü CodeView'ın simgesel türü bilgi paketlenmiş simge türleri sayısı, 64 K değerini aştığında, taşma neden olan bir 16 bit değeri dizinidir gerçeğini son hatalardır.

Bir Visual C++ sürüm 1.0 (32-bit) ve sürüm 1.5 (16-bit) eski CK1020 hata iletisinin yerini CK4009 olduğuna dikkat edin. CK1020, the packer başarısız oldu ve program değil debugged. CK4009, the packer başarısız olmayan, ancak sonraki nonprimitive türleri atar. Bu program, türü değil atıldı bu simgeler için debugged en az izin verir.

Çözüm

Böylece onu başarıyla debugged, bir uygulama içindeki simgeler sayısını azaltmak için yapılması birkaç nokta şunlardır:
  1. Için kalan /zd /Zi ile hata ayıklama ve gereken kaynak dosyaları yalnızca derleyin. Bu, uygulama içindeki simgeler sayısını azaltacaktır. (Programmer's kullanıyorsanız, derleme, modül içinde bu araçlar seçime bağlı olmadığı için WorkBench (PWB) veya Visual Workbench, bu da bir dış makefile kullanmanızı gerektirir.) /Zd ile derlemeye seçerseniz, yalnızca modülleri için satır numarası desteği elde edersiniz. Bir linker mapfile ile en az global verilerinizi CodeView gerekirse görüntüleyebilmeniz, ortak sembolleri konumunu belirleyebilirsiniz. Ek bilgi için lütfen aşağıdaki article(s) olarak Microsoft Knowledge Base'de bakın:
    48241Bellekteki bir konumu eşlem dosya adresleri arasındaki ilişki
  2. MFC Visual C++ ile kullanıyorsanız, /Z7 yerine <a1>/Zi</a1> anahtarıyla MFC kitaplıklarını yeniden deneyin. Bu bir simgesel türü bilgisinin tümünü içeren tüm kitaplığı .PDB (program veritabanı) dosyası oluşturacaksınız. Kaynak dosya derleniyor sırasında her derleyici tür bilgileri yeni bir simge oluşturur, bu tür zaten yüklü olup olmadığını görmek için PDB dosyasını denetler. Bu durumda, türü eklenir. Bu işlemi kullanarak, toplam türü bilgi miktarını, aksi halde Microsoft Foundation Class (MFC) için oluşturulan .OBJ dosyalarda bulunması, yedek türleri ortadan kaldırarak azalır kitaplıkları /Z7 kullanma. /Zi kullanarak daha etkili şekilde işletmek packer yardımcı packer kodu, yürütmeden önce haline getirilmesini isteyip redundancies neden olur.
  3. Visual C++ projelerde, uygulamanız için tek bir .PDB dosyası belirtmek için /fd kullanarak derleyin. Yine burada packer yürütmeden önce birden çok modül uygulamalarda bulunan redundancies ortadan kaldırarak türleri sayısını azaltmak için fikirdir. Bir Visual Workbench oluşturuluyorsa otomatik olduğunu unutmayın. Varsayılan dosya MSVC.PDB adlı: /fd kullanarak bir diğer ad belirtmenize olanak verir. Varsayılan PDB dosyaları (yedek bilgilerin ortadan) kullanmak için olduğundan, sorun ortaya daha az olasıdır. PDB kullanımını etkinleştirmek için <a0></a0>, derleme ve "Program veritabanında" IDE kapatın yoksa /Z7 /Zi kullanın (veya /PDB: komut satırında YOK).
  4. Olanaklıysa, sınıflar, yapıları, çeteleler ve sendikalar gibi daha karmaşık türlerinden bazıları ortadan göz önünde bulundurun. Bu işlem, uygulamanızda gereğinden eklenmesini türleri olasılığını azaltacaktır.
  5. Hiç hata ayıklama bilgileri olmadan modüllerinden bir bölümünü derleyin. Microsoft Foundation Sınıf kullanıyorsanız, bakım _DEBUG ve _DEBUG derlenen modül derlenmiş modülleri karıştırmak için alınması gerekir. MFC kitaplık CODEVIEW ile deneyin = 0 ya da CODEVIEW simgesel bilgi miktarını azaltmak için 2 = (hata AYıKLAMA için varsayılan "= 1 _DEBUG tanımlayan"). Sınıf kitaplığı ile CODEVIEW ne zaman oluşturulur = 0, hata ayıklama bilgilerini, kullanılabilir herhangi bir kitaplık olacaktır. IZLEME ve ASSERT işlevleri hata ayıklama MFC ancak kullanılabilir olmaya devam eder. Ile CODEVIEW = 2, hata ayıklama bilgileri ile bazı bileşenleri kitaplığının yerleşik. Içindeki README.TXTHangi seçenekleri do açısından MFC kitaplık için hata ayıklama bilgileri sınırlama her daha \MFC\SRC açıklar. Ek bilgi de "Sınıf kitaplıkları User's Guide", ekte aşağıdaki şekilde bulunabilir:
    Visual C++ sürüm 1.0 (16-bit) için ek B
    Visual C++ sürüm 1.5 (16-bit) için ek A
    Visual C++ sürüm 1.1 (32-bit) için ek B
  6. Bir başka Onaylanmayan bir olası çözümü için önceden derlenmiş bir üstbilgi ile ilişkilidir. Etkinleştirme deneyebilirsiniz veya önceden derlenmiş bir üstbilgi kullanımını devre dışı bırakılması, hangisi şu anda kullanılan ve sonra rebuild her şey. Bu üstbilgi dosyaları uygulamanızın kullanımına bağlı olarak farklı etkileri olabilir.

Durum

Microsoft bu sorunun CVPACK yardımcı program için MS-DOS sürüm 4.0, 4.1 ve 4.26 and CVPACK yardımcı programı Windows NT için <a1>Sürüm</a1> 4.25 olmasını onaylamıştır. Biz bu sorun üzerinde araştırma ve burada yeni bilgiler kullanılabilir olduğunda Microsoft Bilgi Bankası'ndaki deftere nakleder.

Daha fazla bilgi

Simge ve tür OMF Specification simgesel hata ayıklama bilgilerini (Visual C++ bu .PDB dosya ve nesne modüller dahil), derleyici tarafından oluşturulan iki tablo içinde yer alması gerekir. Ilk tablo $ $ SIMGELERI denir ve ikinci $ $ TYPES denir ve simge türleri hakkında bilgi içeren nesne dosyasındaki; simgeler açıklar. Örneğin, "int i; int"tür "i" simgesini tanımlar."". Kullanılan her iki tablonun kayıtları alanları olan diğer tablonun kayıtları dizini için. Ayrıca, üçüncü bir tablo linker oluşturulan ve yürütülebilir dosyasına yazılan simgesel bilgi yok. Bu tablo, PUBLICS olarak bilinir ve nesne dosyaları işlenirken karşılaşılan ortak her simge için simge kayıtları içerir.

CVPACK'ın amacı, yinelenen bir simge ve türü bilgileri kaldırmak ve geri kalan bilgileri CodeView işlenmesi için en iyi duruma getirilmiş bir biçimde yeniden sağlamaktır. Dizinin kendisi, 16-bitlik bir değer olduğundan, 64 K, kalan bu bilgi türünü indis aşmamalıdır. Bu dizin belirtiminin bir parçası olduğundan, çoğu üçüncü taraf satıcılar tarafından sağlanan, açıkca araçları koparmadan değiştirilemez.

Özellikler

Makale numarası: 112335 - Last Review: 23 Ekim 2003 Perşembe - Gözden geçirme: 2.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft CVPACK for MS-DOS 4.0
  • Microsoft CVPACK for MS-DOS 4.10
  • Microsoft CVPACK for MS-DOS 4.26
  • Microsoft CVPACK Utility for Windows NT 4.25
  • Microsoft CVPACK Utility for Windows NT 4.27
Anahtar Kelimeler: 
kbmt KB112335 KbMttr
Machine-translated Article
Ö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:112335
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com