致命的なエラー C1128Fatal Error C1128

セクションの数がオブジェクト ファイル形式の制限を超えています : /bigobj と共にコンパイルしてくださいnumber of sections exceeded object file format limit : compile with /bigobj

.obj ファイルが、許容されるセクション数である COFF オブジェクト ファイル形式制限を超えました。An .obj file exceeded the number of allowable sections, a COFF object file format limitation.

このセクション制限に到達できるを使用した結果/Gyとデバッグ ビルドです。/Gyにより、関数に独自の COMDAT セクションに移動します。Reaching this section limitation can be the result of using /Gy and a debug build; /Gy causes functions to go into their own COMDAT sections. デバッグ ビルドには、各 COMDAT 関数のデバッグ情報セクションがあります。In a debug build, there is a debug info section for each COMDAT function.

C1128 エラーは、インライン関数が多すぎることが原因で発生することもあります。C1128 can also be caused when there are too many inline functions.

このエラーを修正するには、ソース ファイルを複数のソース コード ファイルに分割、なしでコンパイル /Gyを使用してコンパイル/bigobj (セクション数を増やすので。Obj ファイル)します。To correct this error, divide your source file into multiple source code files, compile without /Gy, or compile with /bigobj (Increase Number of Sections in .Obj file). せずにコンパイルする場合 /Gy、個別に、最適化を指定する必要がありますので /O2/O1両方を意味 /Gyします。If you do not compile with /Gy, you will need to specify the optimizations individually, since /O2 and /O1 both imply /Gy.

可能であれば、デバッグ情報なしでコンパイルしてください。If possible, compile without debugging information.

また、テンプレートの固有のインスタンス化をコンパイラで出力するのではなく、別のソース コード ファイルにこれらを指定する必要もあります。You may also need to have specific instantiations of templates in separate source code files, rather than having the compiler emit them.

コードを移植するときに c1128 が最初に、x64 を使用する場合、コンパイラおよび x86 でコンパイラ。When porting code, C1128 will likely appear first when using the x64 compiler, and much later with the x86 compiler. x64 には、コンパイルされた各関数に関連付けられている少なくとも 4 つのセクションがある /Gyテンプレートまたはクラス インラインからインライン化: コード、pdata、およびデバッグ情報、および xdata の可能性があります。x64 will have at least 4 sections associated with each function compiled /Gy or inlined from templates or class-inline: code, pdata, and debug info, and possibly xdata. X86 は pdata を持ちません。X86 won’t have the pdata.