我正在使用 Visual Studio 2012 在调试模式下编译程序。StylesDatabase.cpp 和 LanguagesDatabase.cpp 过去在没有 /bigobj 的情况下也能正常编译……因为我删除了一些函数并将一些函数从受保护转移到公共。
这两个 C++ 文件都相当小,但使用模板容器类,如 Boost.MultiIndex(es)、Boost.Unordered(_maps) 和 Wt::Dbo::ptrs。Wt::Dbo::ptr 是一个指向数据库对象的指针,而 Wt::Dbo 是一个 ORM 库。
在此更改之后,编译器失败要求我设置 /bigobj。在我设置 /bigobj 后,编译器工作正常,但是链接器花费了 30 多分钟。
所以我的问题是:
- 一个很小的文件怎么会超过 Visual C++ 的限制?究竟是什么导致超出限制。
- 如何在不拆分 cpp 文件的情况下防止超出限制?
- 为什么链接器要花这么多时间?
如有必要,我可以提供来源。