文書番号: 401942
最終更新日: 2003/11/12
この資料は以下の製品について記述したものです。
- Microsoft(R) Visual C++(TM) Development System Standard Edition forWindows(TM) Version 1.0
- Microsoft(R) Visual C++(TM) Development System Professional Edition forWindows(TM) Version 1.0
概要
この資料は、沢山のソースコードをデバッグモードでビルドするとリンク時に
「 CVPACK:fatal error CK1020:モジュール...の中でパックされた型インデックスが
65535 個を超えました」というエラーが発生する場合の回避方法について説明した
ものです。
詳細
本エラーに関してエラーリファレンスでは、「使われていない型の文字列を削除して
ください」と記述されています。これは、不必要な変数定義や DEFINE 文を無く
して下さいという意味になります。
原因
Visual C++ に添付の CVPACK の新機能として、デバッグ用のシンボル情報をオブジ
ェクトに付けて持たせるのではなく、xxxx.PDB というファイルに一括して持たせる
ようになりました。この時、そのシンボル情報が入り切らなくなった場合、このエ
ラーが発生します。
対処方法
具体的な回避方法としては、以下のようなものがあります。
-
複合型の変数を極力減らす。
構造体、共用体、列挙型およびクラス宣言をできるだけ減らして下さい。これらはシ
ンボルが通常の変数よりも多く必要になるからです。
-
デバッグの対象となるモジュールのみを /Zi オプションでコンパイルし、それ以外
のモジュールを /Zd (行番号のみ)のオプションでビルドするようにして下さ
い。この場合には、メイクファイルを自分で作成する必要があります。
-
/Z7 オプションを使用して、ソースをビルドする。
この /Z7 オプションは C7 互換のシンボル情報の付け方で処理します。ですから、
情報が分散されてエラーが出にくくなります。
-
標準のクラスライブラリをビルドし直す。
インストール時に生成されるデバッグ用のクラスライブラリは最大限のシンボル情報
を含むようになっています。(ユーザ自身がライブラリを作成する時の NMAKE のパ
ラメータで CODEVIEW = 1 を指定したのと同じ)これを、CODEVIEW = 0, もしくは 2
でビルドし直します。0 であっても TRACE, ASSERT は使えます。2 であれば、よく使
用するモジュールには、シンボル情報が付きます。ただし、DEBUG = 1 のパラメータ
を記述しておかなくてはいけません。
Keywords: KBPRB VC10 KB401942
Technology: kbAudDeveloper kbVCsearch