Chyba: CK1020 nebo byly zjištěny při typ info překročí 64 kB CK4009

Překlady článku Překlady článku
ID článku: 112335 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Vytváření ladicí verze aplikace obsahující více než 64 kB zadejte informace o indexu může způsobit jeden nebo více následujících chybových zpráv podle toho, jaká verze CVPACK je používán:
Závažná chyba CVPACK: CK1020: index sbalené typu překračuje 65535 modulu <filename.obj>
Upozornění CVPACK: CK4009: překročen... typy 64 kB zahozením následných typy.
cvpack.exe vnitřní chyba, kód výjimky - 0xc0000005

Příčina

Tyto chyby jsou kvůli částečně fakt, že CodeView symbolické typ informace index je 16 bitů hodnotu, která způsobuje přetečení, pokud počet typů sbalené symbol překročí 64 kB.

Všimněte si, že je CK4009 Visual C++ verze 1.0 (32 bitů) a nahrazení verze 1.5 (16 bitů) pro starší CK1020 chybová zpráva. S CK1020 se nezdařilo packer a ladit program. S CK4009 packer nezdaří, ale zahodí všechny následné typy nonprimitive. To alespoň umožní program pro tyto symboly nejsou vyřazeny jejichž typy laděn.

Řešení

Zde několik věcí, které lze provést tak, aby jej může být úspěšně laděn snížit počet symboly aplikace:
  1. Kompilace pouze zdrojové soubory, které potřebujete ladění /Zi a použít pro zbývající /Zd. Sníží číslo symboly v aplikaci. (Pokud používáte programátorského WorkBench (PWB) nebo Visual Workbench jej bude také vyžadovat použít externí makefile protože kompilace není modul výběrové v rámci těchto nástrojů.) Jestliže zvolíte kompilovat /Zd získáte pouze pro moduly podporu číslo řádku. Linker mapfile můžete tak můžete alespoň zobrazit globální data v CodeView potřeby určit umístění veřejné symboly. Další informace naleznete v následujícím článku v Knowledge Base:
    48241Vztah mezi mapy adresy souboru a umístění v paměti
  2. Pokud používáte MFC s Visual C++, zkuste opětovné sestavení knihoven MFC s přepínačem /Zi namísto /Z7. Vytvoří soubor .PDB (program databáze) pro celou knihovnu, která bude obsahovat všechny symbolické typ informace. Při kompilaci zdrojové soubory při každém Kompilátor generuje informace o typu pro nový symbol zkontroluje soubor PDB zobrazíte, pokud tento typ již existuje. Pokud ano, typ není přidán. Pomocí tohoto procesu je celková částka informace typu snížena o vyloučení redundantních typy, které by jinak byly obsaženy v .OBJ soubory vytvořené pro MFC (Microsoft Foundation Class) pomocí /Z7 knihoven. Pomocí /Zi způsobí redundance snížena před spustí packer kód, který pomůže pracovat efektivněji packer.
  3. Projekty Visual C++ kompilace určit jediného souboru .PDB aplikace pomocí /fd. Zde nápad je opět snížit počet typů vyloučení redundance přítomných v multi modulu aplikací před provede packer. Poznámka: Toto je automatické, jestliže vytváříte z Visual Workbench. Výchozí soubor bude pojmenován MSVC.PDB: pomocí /fd umožňuje zadat alternativní název. Protože výchozí nastavení je použití souborů PDB (což eliminuje nadbytečné informace), je mnohem méně pravděpodobné, že nastat problém. Chcete-li povolit použití PDB, použijte /Zi při kompilaci a nevypínejte "Programu databáze" v IDE /Z7 (nebo použijte /PDB: NONE v příkazovém řádku).
  4. Pokud je to možné zvažte některé typy složitější například třídy, struktury, výčtů a svazy vyloučení. Snížíte pravděpodobnost typy redundantly obsažen v aplikaci.
  5. Některé moduly bez informace o ladění vůbec kompilace. Pomocí Microsoft Foundation Classes, musí být nechcete míchat moduly zkompilovány s _DEBUG a moduly zkompilovány bez _DEBUG převzaty péči. Zkuste vytváření knihovny MFC s CODEVIEW = 0 nebo CODEVIEW = 2 snížit množství symbolické informace (výchozí DEBUG je "= 1, které definuje _DEBUG). Pokud knihovna tříd je integrována s CODEVIEW = 0, nebudete mít žádné knihovny k dispozici informace o ladění. Funkce trasování a požadavek ladění MFC bude stále k dispozici, však. S CODEVIEW = 2, některé součásti knihovny bude integrována s informace o ladění. Readme.txt vJaké možnosti proveďte z hlediska omezení ladicí informace k dispozici pro knihovny MFC jednotlivých dále vysvětluje \MFC\SRC. Další informace lze také nalezen v dodatku "Příručce uživatele knihovny třídy" způsobem:
    Dodatek B: Visual C++ verze 1.0 (16 bitů)
    Dodatek A Visual C++ verze 1.5 (16 bitů)
    Dodatek B: Visual C++ verze 1.1 (32 bitů)
  6. Jeden jiné nepotvrzené možných řešení souvisí s předkompilovaný záhlaví. Můžete zkusit povolení nebo zakázání použití předkompilovaný záhlaví, která není právě používán a pak nové sestavení vše. Pravděpodobně různý efekty v závislosti na použití souborů záhlaví vaše aplikace.

Prohlášení

Společnost Microsoft potvrzuje, že se tento problém v CVPACK nástroj pro MS-DOS verze 4.0, 4.1 a 4.26 a CVPACK nástroj pro Windows NT, verze 4.25 být. Jsme se tento problém zkoumá a zaúčtuje nové informace v Knowledge Base jako k dispozici.

Další informace

Symbol a typ OMF specifikace vyžaduje symbolické informace ladění být součástí dvou tabulek generovány kompilátoru (v jazyce C++ tyto jsou zahrnuty v souboru .PDB a moduly objektu). První tabulka se nazývá $ $ SYMBOLY a popisuje symboly v souboru objekt; zatímco druhý je volána $ $ typy a obsahuje informace o typech symbol. Například příkaz „ int i; int "definuje symbol"i"Typ" ". Existují polí v záznamech obou tabulek, které slouží k indexu do záznamů v tabulce. Navíc je třetí tabulky symbolické informace generované linker a zapsána do spustitelného souboru. Tato tabulka se nazývá PUBLICS a obsahuje symbol záznamy pro každý symbol veřejné zjistila při zpracování souborů objektu.

CVPACK jeho účelem je odebrat duplicitní informace symbol a typ a přepíše zbývající informace ve formátu optimalizována pro zpracování CodeView. Typ indexů pro zbývající informace nesmí překročit 64 kB, protože index samotný je 16bitová hodnota. Protože tento index je součástí specifikace, nemůže být změněn bez narušení nástroje, které závisí na, z nichž mnohé dodal výrobců.

Vlastnosti

ID článku: 112335 - Poslední aktualizace: 23. října 2003 - Revize: 2.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt KB112335 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:112335
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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