2013-02-27 31 views
34

Các cơ bản tìm kiếm Google bigobj issue cho thấy rằng rất nhiều người gặp phải sự Fatal Error C1128: "số phần vượt quá đối tượng định dạng tập tin giới hạn: biên dịch với/bigobj". Lỗi này có nhiều cơ hội xảy ra hơn nếu một người sử dụng nhiều thư viện mẫu C++, như Boost libraries hoặc CGAL libraries.phạt của MSVS biên dịch cờ/bigobj

Lỗi đó là lạ, bởi vì nó cung cấp giải pháp cho chính nó: đặt compiler flag /bigobj!

Vì vậy, đây là câu hỏi của tôi: tại sao cờ đó không được đặt theo mặc định? Phải có một hình phạt bằng cách sử dụng lá cờ đó, nếu không nó sẽ được thiết lập theo mặc định. Hình phạt đó không được ghi trong MSDN. Có ai có một đầu mối?

Tôi đặt câu hỏi bởi vì tôi tự hỏi nếu hệ thống cấu hình của CGAL không được đặt theo mặc định là /bigobj.

Trả lời

28

Các tài liệu không đề cập đến một nhược điểm quan trọng để /bigobj:

Linkers rằng vận chuyển trước khi Visual C++ 2005 không thể đọc obj file được sản xuất với /bigobj.

Vì vậy, đặt tùy chọn này theo mặc định sẽ hạn chế số lượng liên kết có thể tiêu thụ tệp đối tượng kết quả. Tốt hơn để kích hoạt nó trên cơ sở cần thiết.

+2

Tôi cảm thấy như thế này chỉ là một phần của câu trả lời. Tại sao vấn đề này không xảy ra với gcc hoặc clang? Họ có hành vi của một cái gì đó tương tự như '/ bigobj' được xây dựng trực tiếp và _always-on_? – Ela782

Các vấn đề liên quan